比赛 |
位运算及及其应用题单 |
评测结果 |
AAAAAAAAAA |
题目名称 |
宝物筛选 |
最终得分 |
100 |
用户昵称 |
TeaWine |
运行时间 |
0.212 s |
代码语言 |
C++ |
内存使用 |
3.37 MiB |
提交时间 |
2025-01-25 11:09:00 |
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
int n,W,n2,a[100086],zw[1000086],zv[1000086],dp[1000086];
int main () {
freopen("treasure.in","r",stdin);
freopen("treasure.out","w",stdout);
cin>>n>>W;
for(int i = 0; i<n; i++){
int v,w,x,l=1;
cin>>v>>w>>x;
while(x-l>=0){
x-=l;
zw[n2]=w*l;
zv[n2]=v*l;
a[n2++]=l;
l*=2;
}
zw[n2]=w*x;
zv[n2]=v*x;
a[n2++]=x;
}
for(int i = 0; i<n2; i++){
for(int l = W; l>=zw[i]; l--){
dp[l]=max(dp[l],dp[l-zw[i]]+zv[i]);
}
}
cout<<dp[W];
return 0;
}