hdu6007 Mr. Panda and Crystal 最短路+完全背包
Posted 天道酬勤007
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hdu6007 Mr. Panda and Crystal 最短路+完全背包相关的知识,希望对你有一定的参考价值。
/** 题目:hdu6007 Mr. Panda and Crystal 链接:http://acm.hdu.edu.cn/showproblem.php?pid=6007 题意:魔法师有m能量,有n种宝石,有些宝石给定了用魔法变出它需要的能量,以及该宝石可以卖出的价钱。 有些宝石没有给出,给出k个方程,表示某些宝石可以通过另外一些宝石合成。 求魔法师最多可以卖出多少钱。 思路: 处理方程,最短路求出所有的宝石用能量变出的最小能量值。 然后完全背包。 */ #include<iostream> #include<cstdio> #include<algorithm> #include<map> #include<vector> #include<cstring> using namespace std; typedef pair<int,int> P; typedef long long LL; const int N = 205; const int inf = 0x3f3f3f3f; int cost[N], price[N]; struct node { int goal; vector<P> v; }eq[N]; int dp[10004]; int main() { int cas = 1, T, n, m, k; cin>>T; while(T--) { scanf("%d%d%d",&m,&n,&k); int flag; for(int i = 1; i <= n; i++){ scanf("%d",&flag); if(flag==0){ cost[i] = -1; scanf("%d",&price[i]); }else { scanf("%d%d",&cost[i],&price[i]); } } int x, y; for(int i = 1; i <= k; i++) eq[i].v.clear(); for(int i = 1; i <= k; i++){ scanf("%d%d",&x,&y); eq[i].goal = x; int u, vv; for(int j = 1; j <= y; j++){ scanf("%d%d",&u,&vv); eq[i].v.push_back(P(u,vv)); } } while(1) { int flag = 1; for(int i = 1; i <= k; i++){ int sign = 1; int sum = 0; for(int j = 0; j < (int)(eq[i].v.size()); j++){ P p = eq[i].v[j]; if(cost[p.first]==-1){ sign = 0; break; }else { sum += cost[p.first]*p.second; if(sum>m){///完全背包,最多m容量,所以超过m的能量花费,都不会被使用。这样避免溢出。 sum = m+1; break; } } } if(sign){ if(cost[eq[i].goal]!=-1){ if(cost[eq[i].goal]>sum){ cost[eq[i].goal] = sum; flag = 0; } }else { cost[eq[i].goal] = sum; flag = 0; } } } if(flag) break; } memset(dp, 0, sizeof dp); for(int i = 1; i <= n; i++){ if(cost[i]==-1) continue; for(int j = cost[i]; j <= m; j++){ dp[j] = max(dp[j],dp[j-cost[i]]+price[i]); } } printf("Case #%d: %d\n",cas++,dp[m]); } return 0; }
以上是关于hdu6007 Mr. Panda and Crystal 最短路+完全背包的主要内容,如果未能解决你的问题,请参考以下文章
Gym 101194F Mr. Panda and Fantastic Beasts
[acm/icpc2016ChinaFinal][CodeforcesGym101194] Mr. Panda and Fantastic Beasts
费用流 ICPC 2016 China Final J. Mr.Panda and TubeMaster
2018CCPC-K - Mr. Panda and Kakin(欧拉定理&快速乘&CRT&EXGCD)
Gym 101194C / UVALive 7899 - Mr. Panda and Strips - [set][2016 EC-Final Problem C]
2017-2018 ACM-ICPC Asia East Continent League Final H - Mr. Panda and Birthday Song(DP)