社区讨论

为什么我会死循环???

P1776宝物筛选参与者 3已保存回复 3

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
3 条
当前快照
1 份
快照标识符
@lo19q466
此快照首次捕获于
2023/10/22 17:30
2 年前
此快照最后确认于
2023/11/02 17:47
2 年前
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;
int dp[40005],cnt,v[100005],w[100005];
int main(){
	int n,m;
	cin>>n>>m;
	for(int i=1,a,b,c;i<=n;i++){
		cin>>a>>b>>c;
		int s=1;
		while(s>=c){
			w[++cnt]=a*s;
			v[cnt]=b*s;
			c-=s;
			s*=2;
		}
		if(c>0){
			w[++cnt]=a*c;
			v[cnt]=b*c;
		}
	}
	
	for(int i=1;i<=cnt;i++)
		for(int j=m;j>=v[i];j--)
			dp[j]=max(dp[j],dp[j-v[i]]+w[i]);
	cout<<dp[m];
	return 0;
}

回复

3 条回复,欢迎继续交流。

正在加载回复...