为什么自己手动输入数据是对的到洛谷上就是错的?
查看原帖
为什么自己手动输入数据是对的到洛谷上就是错的?
318909
星星太逊啦!楼主2022/8/11 19:44
#include<bits/stdc++.h>
using namespace std;
const int N=204;
int k,V,n,w[N],v[N],f[5002][55],ans,t[55];
int main(){
	cin>>k>>V>>n;
	for(int i=1;i<=n;++i)cin>>w[i]>>v[i];
	memset(f,128,sizeof(f)),f[0][1]=0;
	for(int i=1;i<=n;++i){
		for(int j=V;j>=w[i];--j){
			int t1=1,t2=1;
			while(t1+t2<=k+1){
				if(f[j-w[i]][t1]+v[i]<f[j][t2])t[t1+t2-1]=f[j][t2++];
				else t[t1+t2-1]=f[j-w[i]][t1++]+v[i];
			}
			for(int l=1;l<=k;++l)f[j][l]=t[l];
		}
	}
	for(int i=1;i<=k;++i)ans+=f[V][i];
	cout<<ans;
	return 0;
}
2022/8/11 19:44
加载中...