不懂就问玄关
  • 板块学术版
  • 楼主Winalways
  • 当前回复5
  • 已保存回复5
  • 发布时间2025/1/18 11:43
  • 上次更新2025/1/18 14:39:58
查看原帖
不懂就问玄关
1011587
Winalways楼主2025/1/18 11:43

为什么在不使用滚动数组时,第二和第三个循环还要逆序?不是使用了滚动数组之后才需要逆序的吗? https://www.luogu.com.cn/problem/P1507

#include <bits/stdc++.h>
using namespace std;
int dp[55][55][55],hs[450],ts[450],k[510];
int main(){
	int h,t,n;
	cin>>h>>t>>n;
	for(int i=1;i<=n;i++){
		cin>>hs[i]>>ts[i]>>k[i];
	}
	for(int i=1;i<=n;i++){
		for(int j=h;j>=1;j--){
			for(int z=t;z>=1;z--){
				if(j>=hs[i]&&z>=ts[i]){
					dp[i][j][z]=max(dp[i-1][j][z],dp[i-1][j-hs[i]][z-ts[i]]+k[i]);
				}
				else dp[i][j][z]=dp[i-1][j][z];
				cout<<dp[i][j][z]<<" ";
			}
		}
		cout<<endl;
	}
	cout<<dp[n][h][t];
	return 0;
}
2025/1/18 11:43
加载中...