萌新请教。#5为什么不过
查看原帖
萌新请教。#5为什么不过
291948
_ruiniyan_楼主2021/8/12 22:12

如题。

代码如下(样例已过)

#include<bits/stdc++.h>
#define X 2047
using namespace std;
long long N,T,C,w[X],t[X],f[X][X];
int main(){
	cin>>N;
	for(int i=1;i<=N;i++){
		cin>>t[i]>>w[i];
		T+=t[i];
		C+=w[i];
	}
	for(int i=1;i<=N;i++){
		for(int cnt=0;cnt<=T;cnt++){//cnt表示可以带走物品数量
			if(cnt>=1) f[i][cnt]=max(f[i-1][cnt-1]+w[i],f[i-1][cnt+t[i]]);//偷走:可带数量减少了1个,获得w[i]价值;付钱:多出t[i]时间可偷
			else f[i][cnt]=f[i-1][cnt+t[i]];
		}
	}
	cout<<C-f[N][0];
}
2021/8/12 22:12
加载中...