如题。
代码如下(样例已过)
#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];
}