比赛 位运算及及其应用题单 评测结果 AAAAAAAAAA
题目名称 宝物筛选 最终得分 100
用户昵称 秋_Water 运行时间 0.211 s
代码语言 C++ 内存使用 3.39 MiB
提交时间 2025-01-25 11:09:48
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
const int N=1000008;
int f[N],ww,v[N],w[N],n,cnt;
int main(){
    freopen("treasure.in","r",stdin);
    freopen("treasure.out","w",stdout);      
	cin>>n>>ww;
	for(int i=1;i<=n;i++){
		int vv,www,m,x=1;
		cin>>vv>>www>>m;
		while(x<=m){
            v[++cnt]=vv*x;
            w[cnt]=x*www;
            m-=x;
            x*=2;
        }      
        if(m){
            v[++cnt]=vv*m;
            w[cnt]=m*www;
        }
	}
	for(int i=1;i<=cnt;i++){
		for(int j=ww;j>=w[i];j--){
			f[j]=max(f[j],f[j-w[i]]+v[i]);
		}
	}
	cout<<f[ww];

	return 0;
}