Mr. Panda and Crystal(最短路+完全背包)
http://codeforces.com/gym/101206/attachments
题意:
T组输入,每组给出m,n,k,m为能量总数,n为水晶种类数,k为合成方案数。有的水晶可以用能量制造,有的水晶不行,有的水晶可以通过其他水晶合成。每种水晶都有固定的价格。给出部分水晶的造价,所有水晶的价格和k个合成方案,问卖水晶最大能获得的钱数
思路:
可以将合成操作理解为最短路中的松弛操作,套bellman_ford的方法,每次遍历所有合成方案一次,若没有一个水晶造价被松弛,则跳出循环,所有造价均已达到最小
之后套用完全背包即可(每种水晶可以使用无限次,能量有限)
#include <bits//stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=205;
ll w[maxn],p[maxn];
ll obj[maxn],num[maxn],use[maxn][maxn],cost[maxn][maxn];
ll dp[maxn];
int T,m,n,k;
void bellman_ford(){
while(1){
int flag=0;
for(int i=1;i<=k;i++){
ll cos=0;
for(int j=1;j<=num[i];j++){
if(w[use[i][j]]==-1){
cos=-1;break;
}
cos+=w[use[i][j]]*cost[i][j];
}
if(cos!=-1){
if(cos<w[obj[i]]||w[obj[i]]==-1){
w[obj[i]]=cos;
flag=1;
}
}
}
if(!flag)break;
}
}
void init(){
for(int i=1;i<=n;i++){
w[i]=-1;
}
for(int i=0;i<=m;i++)
dp[i]=0;
}
int main(){
cin>>T;
for(int kase=1;kase<=T;kase++){
scanf("%d%d%d",&m,&n,&k);
init();
for(int i=1;i<=n;i++){
int type;
scanf("%d",&type);
if(type)
scanf("%lld%lld",&w[i],&p[i]);
else
scanf("%lld",&p[i]);
}
for(int i=1;i<=k;i++){
scanf("%lld%lld",&obj[i],&num[i]);
for(int j=1;j<=num[i];j++){
scanf("%lld%lld",&use[i][j],&cost[i][j]);
}
}
bellman_ford();
for(int i=1;i<=n;i++){
if(w[i]==-1)continue;
for(int j=w[i];j<=m;j++){
dp[j]=max(dp[j],dp[j-w[i]]+p[i]);
}
}
printf("Case #%d: %lld\n",kase,dp[m]);
}
}
/*
2
100 3 2
0 20
1 15 10
1 2 1
1 2 2 1 3 1
2 1 3 2
100 3 2
1 3 1
1 4 1
0 10
3 1 1 3
3 1 2 2
*/
Mr. Panda and Crystal(最短路+完全背包)的更多相关文章
- hdu6007 Mr. Panda and Crystal 最短路+完全背包
/** 题目:hdu6007 Mr. Panda and Crystal 链接:http://acm.hdu.edu.cn/showproblem.php?pid=6007 题意:魔法师有m能量,有n ...
- Mr. Panda and Crystal HDU - 6007 最短路+完全背包
题目:题目链接 思路:不难看出,合成每个宝石需要消耗一定的魔力值,每个宝石有一定的收益,所以只要我们知道每个宝石合成的最小花费,该题就可以转化为一个背包容量为初始魔力值的完全背包问题,每个宝石的最小花 ...
- HDU 6007 Mr. Panda and Crystal (背包+spfa)
题意:你生活在一个魔法大陆上,你有n 魔力, 这个大陆上有m 种魔法水晶,还有n 种合成水晶的方式,每种水晶价格告诉你,并且告诉你哪些水晶你能直接造出来,哪些你必须合成才能造出来,问你n魔力最多能卖多 ...
- HDU 3339 In Action【最短路+01背包】
题目链接:[http://acm.hdu.edu.cn/showproblem.php?pid=3339] In Action Time Limit: 2000/1000 MS (Java/Other ...
- HDU 3339 In Action【最短路+01背包模板/主要是建模看谁是容量、价值】
Since 1945, when the first nuclear bomb was exploded by the Manhattan Project team in the US, the n ...
- 2018 China Collegiate Programming Contest Final (CCPC-Final 2018)-K - Mr. Panda and Kakin-中国剩余定理+同余定理
2018 China Collegiate Programming Contest Final (CCPC-Final 2018)-K - Mr. Panda and Kakin-中国剩余定理+同余定 ...
- H - Mr. Panda and Birthday Song Gym - 101775H (动态规划)
Mrs. Panda’s birthday is coming. Mr. Panda wants to compose a song as gift for her birthday. It is k ...
- *HDU3339 最短路+01背包
In Action Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total S ...
- HDU 3339 In Action 最短路+01背包
题目链接: 题目 In Action Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
随机推荐
- ubuntu下mysql定时备份
一:ubuntu下自动备份mysql数据库 转载来源:https://jingyan.baidu.com/article/ab0b563097cabac15afa7dbc.html 1.创建保存备份文 ...
- 洛谷 P3368 【模板】树状数组 2(区间加,单点查询)
题目链接 https://www.luogu.org/problemnew/show/P3368 树状数组 最基础的用法:https://www.cnblogs.com/yinyuqin/p/1096 ...
- CodeForces 711D Directed Roads (DFS找环+组合数)
<题目链接> 题目大意: 给定一个$n$条边,$n$个点的图,每个点只有一条出边(初始状态),现在能够任意对图上的边进行翻转,问你能够使得该有向图不出先环的方案数有多少种. 解题分析: 很 ...
- Kafka、ActiveMQ、RabbitMQ、RocketMQ 都有什么区别,消息队列有什么优点和缺点
面试题 为什么使用消息队列? 消息队列有什么优点和缺点? Kafka.ActiveMQ.RabbitMQ.RocketMQ 都有什么区别,以及适合哪些场景? 面试官心理分析 其实面试官主要是想看看: ...
- Python之反向迭代
需求:得到反方向迭代一个序列解决:使用内置的 reversed() 函数 a = [1, 2, 3, 4] for x in reversed(a): print(x) # 4 3 2 1 反向迭代仅 ...
- shell脚本从入门到精通(中级)之提高篇
shell 脚本入门到精通(中级) 一.shell 脚本的执行 二.输出格式化 三.数据类型 四.重定向 五.变量 一.shell 脚本的执行 1. 脚本执行的4种方法 $ ls /tmp/test. ...
- mySql配置在nodejs中使用
mySql安装完成后,配置链接nodejs项目中的数据库. 1.测试是否安装成功. 2.use nodejs使用nodejs 3.设置数据源 5.exit
- web前端之html基础知识初级
html 基础标签 单标签 1.注释标签: ctrl+/ 换行标签: 横线标签: 标题标签: 段落标签: 表示强调标签: 文字 属性:文字加颜色 color:改变文字颜色 size:改文字大小属性 例 ...
- setter getter 方法
MRC下setter.getter方法写法.重写dealloc方法 @interface People : NSObject @property (nonatomic,strong) NSString ...
- 基本的bash shell
一.linux文件系统 linux文件系统结构是从Unix文件结构演进过来的.在linux文件系统中,通用的目录名用于表示一些常见的功能.如下表列出一些较为常见的Linux顶层虚拟目录名及其内容. / ...