codevs 1155今明的预算方案(复习有依赖性的背包问题)
2017-06-20 19:59
375 查看
1155 金明的预算方案
【题目大意】买附件必须买主件。
在一定钱数内 求总价值最大。
【题解】有依赖性的背包问题。
【code】
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; int n,m,zc,ans; int c[100],pri[100][5],imp[100][5]; void dfs(int x,int res,int nowa){ ans=max(ans,nowa); if(res==0)return; if(x>zc)return; dfs(x+1,res,nowa); if(res-pri[x][0]>=0)dfs(x+1,res-pri[x][0],nowa+pri[x][0]*imp[x][0]); if(c[x]){ if(res-pri[x][0]-pri[x][1]>=0)dfs(x+1,res-pri[x][0]-pri[x][1],nowa+pri[x][0]*imp[x][0]+pri[x][1]*imp[x][1]); if(c[x]==2){ if(res-pri[x][0]-pri[x][2]>=0)dfs(x+1,res-pri[x][0]-pri[x][2],nowa+pri[x][0]*imp[x][0]+pri[x][2]*imp[x][2]); if(res-pri[x][0]-pri[x][1]-pri[x][2]>=0)dfs(x+1,res-pri[x][0]-pri[x][1]-pri[x][2],nowa+pri[x][0]*imp[x][0]+pri[x][1]*imp[x][1]+pri[x][2]*imp[x][2]); } } } int main(){ scanf("%d%d",&n,&m); for(int i=1;i<=m;i++){ int v,p,q; scanf("%d%d%d",&v,&p,&q); if(q==0)pri[++zc][0]=v,imp[zc][0]=p; else { c[q]++;int a=c[q]; pri[q][a]=v;imp[q][a]=p; } } dfs(1,n,0); printf("%d\n",ans); return 0; }50暴力
#include<iostream> #include<cstdio> using namespace std; struct e { int v,p,q,w,f[66]; }g[66]; int n,m,f[35000]; int main() { scanf("%d%d",&n,&m); for(int i=1;i<=m;i++) { scanf("%d%d%d",&g[i].v,&g[i].p,&g[i].q); g[i].w=g[i].v*g[i].p; if(g[i].q!=0) g[g[i].q].f[++g[g[i].q].f[0]]=i; } for(int i=1;i<=m;i++) { if(g[i].q==0) { int f1=g[i].f[1],f2=g[i].f[2]; for(int j=n;j>=g[i].v;j--) { if(f1&&j-g[f1].v-g[i].v>=0) f[j]=max(f[j],f[j-g[i].v-g[f1].v]+g[i].w+g[f1].w); if(f2&&j-g[f2].v-g[i].v>=0) f[j]=max(f[j],f[j-g[i].v-g[f2].v]+g[i].w+g[f2].w); if(f1&&f2&&j-g[i].v-g[f1].v-g[f2].v>=0) f[j]=max(f[j],f[j-g[i].v-g[f1].v-g[f2].v]+g[i].w+g[f1].w+g[f2].w); f[j]=max(f[j],f[j-g[i].v]+g[i].w); } } } printf("%d\n",f ); return 0; }
相关文章推荐
- codevs 1155 金明的预算方案(背包)
- 第七讲 有依赖的背包问题 vijos P1313金明的预算方案
- 树形依赖背包(codevs1155 金明的预算方案 2006年NOIP全国联赛提高组)
- Sicily 1346 金明的预算方案 (SOJ 1346) 【DP 动态规划-背包问题】
- 动态规划(背包问题):HRBUST 1377 金明的预算方案
- 普及练习场 动态规划的背包问题 金明的预算方案
- 蓝桥杯 算法提高 金明的预算方案 CODEVS 1155 【分组背包】
- 金明的预算方案(有依赖的背包问题)
- 背包问题-多重背包问题-金明的预算方案
- 金明的预算方案 有限制的背包问题
- 【日常学习】【背包DP】codevs1155 金明的预算方案题解
- NOIP2006金明的预算方案[DP 有依赖的背包问题]
- 有依赖的背包问题——金明的预算方案
- 动态规划背包问题 洛谷P1064 金明的预算方案
- 洛谷P1064 金明的预算方案(有依赖的背包问题)
- 洛谷 1064——金明的预算方案(动态规划的背包问题)
- 蓝桥杯 算法提高 金明的预算方案 有依赖的背包问题
- sicily 1346 金明的预算方案 有依赖的背包问题
- RONOJ 6今明的预算方案(有依赖的背包)
- 算法提高 金明的预算方案 有依赖的背包问题