1 条题解
-
2
只是初始化麻烦了点,其他都和01背包一模一样。
#include<bits/stdc++.h> using namespace std; struct node{ long long v,c; }; map< long long , node >a;//使用映射保存花纹编号,也可以在输入时1~3循环 int main() { long long x,xv,xc,f[8002]={},n,m,i,j,v[102],c[102];//避免int和long long不兼容 cin>>n>>m; for(i=1;i<=3;++i) { cin>>x>>xc>>xv; a[x].v=xv; a[x].c=xc; } for(i=1;i<=n;++i) { cin>>xv>>x; v[i]=a[x].v*xv+xv; c[i]=a[x].c*xv; } for(i=1;i<=n;++i) for(j=m;j>=v[i];--j) f[j]=max(f[j],f[j-v[i]]+c[i]);//改都不用改 cout<<f[m]; return 0; }
- 1
信息
- ID
- 572
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 3
- 标签
- (无)
- 递交数
- 21
- 已通过
- 18
- 上传者