【动态规划】Vijos P1313 金明的预算方案(NOIP2006提高组第二题)
2016-08-15 17:07
435 查看
题目链接:
https://vijos.org/p/1313
题目大意:
m(m<=32000)金钱,n(n<=60)个物品,花费vi,价值vi*ci,每个物品可能有不超过2个附件,附件没有附件。
题目思路:
【动态规划】
01背包。因为至多2个附件,且附件没有附件,所以可以直接枚举4种情况。
View Code
https://vijos.org/p/1313
题目大意:
m(m<=32000)金钱,n(n<=60)个物品,花费vi,价值vi*ci,每个物品可能有不超过2个附件,附件没有附件。
题目思路:
【动态规划】
01背包。因为至多2个附件,且附件没有附件,所以可以直接枚举4种情况。
// //by coolxxx ////<bits/stdc++.h> #include<iostream> #include<algorithm> #include<string> #include<iomanip> #include<memory.h> #include<time.h> #include<stdio.h> #include<stdlib.h> #include<string.h> //#include<stdbool.h> #include<math.h> #define min(a,b) ((a)<(b)?(a):(b)) #define max(a,b) ((a)>(b)?(a):(b)) #define abs(a) ((a)>0?(a):(-(a))) #define lowbit(a) (a&(-a)) #define sqr(a) ((a)*(a)) #define swap(a,b) ((a)^=(b),(b)^=(a),(a)^=(b)) #define mem(a,b) memset(a,b,sizeof(a)) #define eps (1e-8) #define J 10 #define MAX 0x7f7f7f7f #define PI 3.14159265358979323 #define N 64 #define M 3204 using namespace std; typedef long long LL; int cas,cass; int n,m,lll,ans; int v ,c ,q ,l ,r ; int f[M]; int main() { #ifndef ONLINE_JUDGE // freopen("1.txt","r",stdin); // freopen("2.txt","w",stdout); #endif int i,j; // for(scanf("%d",&cas);cas;cas--) // for(scanf("%d",&cas),cass=1;cass<=cas;cass++) // while(~scanf("%s",s)) while(~scanf("%d",&m)) { mem(f,0);mem(l,0);mem(r,0); m/=10; scanf("%d",&n); for(i=1;i<=n;i++) { scanf("%d%d%d",&v[i],&c[i],&q[i]); v[i]/=10; if(q[i]) if(l[q[i]])r[q[i]]=i; else l[q[i]]=i; } for(i=1;i<=n;i++) { if(q[i])continue; for(j=m;j>=0;j--) { if(j>=v[i])f[j]=max(f[j],f[j-v[i]]+c[i]*v[i]); if(l[i] && j>=v[i]+v[l[i]])f[j]=max(f[j],f[j-v[i]-v[l[i]]]+c[i]*v[i]+c[l[i]]*v[l[i]]); if(r[i] && j>=v[i]+v[r[i]])f[j]=max(f[j],f[j-v[i]-v[r[i]]]+c[i]*v[i]+c[r[i]]*v[r[i]]); if(l[i] && r[i] && j>=v[i]+v[l[i]]+v[r[i]])f[j]=max(f[j],f[j-v[i]-v[l[i]]-v[r[i]]]+c[i]*v[i]+c[l[i]]*v[l[i]]+c[r[i]]*v[r[i]]); } } printf("%d\n",f[m]*10); } return 0; } /* // // */
View Code
相关文章推荐
- NOIP 2006 - 提高组 金明的预算 动态规划(DP)
- NOIP 2006 金明的预算方案|动态规划
- SDNU 1179.金明的预算方案【NOIP 2006 提高组】【背包问题】【7月30】
- Vijos P1313 金明的预算方案(动态规划,有依赖的背包)
- NOIP提高组2006 金明的预算方案
- noip2006提高组-金明的预算方案解题报告
- 依赖背包dp NOIP2006 vijos 1313 金明的预算方案
- |Tyvj|NOIP2006|动态规划|P1057 金明的预算方案
- noip2006提高组之金明的预算方案
- NOIP 2006 提高组 复赛 budget 金明的预算方案
- [NOIP2006] 提高组 洛谷P1064 金明的预算方案
- Luogu 1064 金明的预算方案 / CJOJ 1352 [NOIP2006] 金明的预算方案(动态规划)
- Code Vs 1155 金明的预算方案&& 2006年NOIP全国联赛提高组
- NOIP2006 金明的预算方案
- Cpp环境【NOIP2006提高组】【Code[VS]1155】【Vijos1399】 金(精)明的预算
- P1313金明的预算方案 动态规划(未解决)
- NOIP 2006 金明的预算方案(带条件的01背包)
- noip2006 金明的预算方案
- [NOIP2006]金明的预算方案【动态规…
- 洛谷 1064 [NOIP2006] 金明的预算方案 背包DP