玄关,帮蒟蒻看看这两份代码有什么区别...
查看原帖
玄关,帮蒟蒻看看这两份代码有什么区别...
421291
Noble_Wolf楼主2024/10/14 21:42

	f[0][0]=0;
	for(int i=1;i<=n;i++){
		now^=1;
		for(int j=200000;j>=-200000;j--){
			f[j][now]=max(f[j][now],f[j-a[i]][now^1]+b[i]); 
		}
	}
	int ans=0;
	for(int i=0;i<=200000;i++){
		if(f[i][now]>=0)ans=max(ans,f[i][now]+i);
	}
	cout<<ans<<endl;

and


	f[0]=f[0]=0;
	for(int i=1;i<=n;i++){
		if(a[i]>=0)for(int j=200000;j>=-200000;j--){
			f[j]=max(f[j],f[j-a[i]]+b[i]);
		}
		else for(int j=-200000;j<=200000;j++){
			f[j]=max(f[j],f[j-a[i]]+b[i]);
		}
	}
	int ans=0;
	for(int i=0;i<=200000;i++){
		if(f[i]>=0)ans=max(ans,f[i]+i);
	}
	cout<<ans<<endl;

2024/10/14 21:42
加载中...