100 Accepted
# | 状态 分数 | 耗时 | 内存占用 |
---|---|---|---|
#1 | Accepted 10 | 3ms | 536 KiB |
#2 | Accepted 10 | 3ms | 328 KiB |
#3 | Accepted 10 | 3ms | 536 KiB |
#4 | Accepted 10 | 3ms | 532 KiB |
#5 | Accepted 10 | 3ms | 552 KiB |
#6 | Accepted 10 | 3ms | 760 KiB |
#7 | Accepted 10 | 3ms | 536 KiB |
#8 | Accepted 10 | 3ms | 320 KiB |
#9 | Accepted 10 | 2ms | 536 KiB |
#10 | Accepted 10 | 3ms | 576 KiB |
代码
#include<bits/stdc++.h>
using namespace std;
long long m,n,ans;
long long v[100000], w[100000];
long long dp[100000],sum=0;
int main(){
scanf("%d%d",&m, &n);
for (long long i=1; i<=n; i++)
{
long long vv,ww,nn;
cin>>vv>>ww>>nn;
if(nn<0)
{
nn=1;
}
else if(nn==0)
{
nn=m/vv;
}
for(int k=1;k<=nn;k*=2){
v[++sum]=vv*k;
w[sum]=ww*k;
nn-=k;
}
if(nn>0){
v[++sum]=nn*vv;
w[sum]=nn*ww;
}
}
for(int i=1;i<=sum;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;
}
信息
- 递交者
- 题目
- P477 【例86.4】 混合背包
- 语言
- C++14(O2)
- 代码长度
- 609 Bytes
- 递交时间
- 2024-4-8 17:18:34
- 评测时间
- 2024-4-8 17:18:35
- 分数
- 100
- 总耗时
- 27ms
- 峰值时间
- 3ms
- 峰值内存
- 760 KiB