[P1064]金明的预算方案
来源:互联网 发布:java优势在哪里 编辑:程序博客网 时间:2024/04/30 04:17
原题链接
本来是道DP题,我们拿来练搜索了(:зゝ∠)虽然最后还是写了DP
一开始的时候把每个情况都单独拿出来了变成01背包
但是有可能出现[选了主件A][选了主件A和附件a1]同时被选中的情况
这样当然就不符合题意了呀☆
因为每个主件顶多只有两个附件所以可以枚举情况直接变成分组背包
每组里面只能选一个
#include<iostream>#include<cstdio>#include<cmath>#include<cstring>#include<algorithm>#include<string>#include<queue>#include<vector>using namespace std;struct nico{ int fv[5],fc[5]; int d=0;}g[500],k[500];int n,m,v,p,q,i,j,t,f,rom[400000],p1,l;int main(){ scanf("%d%d",&n,&m); for(i=1;i<=m;i++) { scanf("%d%d%d",&v,&p,&q); if(q!=0) { g[q].d++; g[q].fv[g[q].d]=v; g[q].fc[g[q].d]=v*p; } else { g[i].fv[0]=v; g[i].fc[0]=v*p; } } for(i=1;i<=m;i++) if(g[i].fc[0]!=0) { f++; t=1; k[f].fv[1]=g[i].fv[0]; k[f].fc[1]=g[i].fc[0]; for(j=1;j<=g[i].d;j++) { if(j==1) { t++; k[f].fc[t]=g[i].fc[0]+g[i].fc[1]; k[f].fv[t]=g[i].fv[0]+g[i].fv[1]; } if(j==2) { t++; k[f].fc[t]=g[i].fc[0]+g[i].fc[2]; k[f].fv[t]=g[i].fv[0]+g[i].fv[2]; t++; k[f].fc[t]=g[i].fc[0]+g[i].fc[1]+g[i].fc[2]; k[f].fv[t]=g[i].fv[0]+g[i].fv[1]+g[i].fv[2]; } } k[f].d=t; } for(i=1;i<=f;i++) for(j=n;j>=0;j--) for(l=1;l<=k[i].d;l++) if(j>=k[i].fv[l]) rom[j]=max(rom[j],rom[j-k[i].fv[l]]+k[i].fc[l]); printf("%d",rom[n]); return 0;}
0 0
- 洛谷 P1064 金明的预算方案
- P1064 金明的预算方案
- P1064 金明的预算方案
- P1064 金明的预算方案
- [P1064]金明的预算方案
- 洛谷 P1064 金明的预算方案
- 洛谷 P1064 金明的预算方案
- luogu P1064 金明的预算方案
- 洛谷 P1064 金明的预算方案
- 洛谷P1064 金明的预算方案
- P1064 金明的预算方案
- 洛谷p1064金明的预算方案
- 洛谷P1064 金明的预算方案
- 洛谷 P1064 [NOIP2006 T2] 金明的预算方案
- 洛谷 P1064 金明的预算方案 依赖背包
- [动态规划] 洛谷P1064 金明的预算方案
- 【DP】洛谷 P1064 金明的预算方案
- P1064 金明的预算方案【2006提高】(背包)
- 跟随手指移动小球
- 8 个 jQuery 的 PDF 浏览插件
- 金融资产管理公司收购不良资产方式探析
- ThreadPoolTaskExecutor异步线程池
- Centos6.8_x86_64安装使用 Informix11.70 数据库
- [P1064]金明的预算方案
- 上升子序列(动态规划
- Fragment问题汇总
- 汇编语言使用根据BIOS输入字符改变屏幕颜色
- 压缩感知重构算法之压缩采样匹配追踪(CoSaMP)
- 在开发中遇到的一些错误
- EditPlus 使用技巧以及快捷键
- 不同的前端项目使用不同的策略
- JS 贪吃蛇 游戏开发视频教程