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 = ;
const int inf = 0x3f3f3f3f; int cost[N], price[N];
struct node
{
int goal;
vector<P> v;
}eq[N];
int dp[];
int main()
{
int cas = , T, n, m, k;
cin>>T;
while(T--)
{
scanf("%d%d%d",&m,&n,&k);
int flag;
for(int i = ; i <= n; i++){
scanf("%d",&flag);
if(flag==){
cost[i] = -;
scanf("%d",&price[i]);
}else
{
scanf("%d%d",&cost[i],&price[i]);
}
}
int x, y;
for(int i = ; i <= k; i++) eq[i].v.clear();
for(int i = ; i <= k; i++){
scanf("%d%d",&x,&y);
eq[i].goal = x;
int u, vv;
for(int j = ; j <= y; j++){
scanf("%d%d",&u,&vv);
eq[i].v.push_back(P(u,vv));
}
}
while()
{
int flag = ;
for(int i = ; i <= k; i++){
int sign = ;
int sum = ;
for(int j = ; j < (int)(eq[i].v.size()); j++){
P p = eq[i].v[j];
if(cost[p.first]==-){
sign = ; break;
}else
{
sum += cost[p.first]*p.second;
if(sum>m){///完全背包,最多m容量,所以超过m的能量花费,都不会被使用。这样避免溢出。
sum = m+; break;
}
}
}
if(sign){
if(cost[eq[i].goal]!=-){
if(cost[eq[i].goal]>sum){
cost[eq[i].goal] = sum;
flag = ;
}
}else
{
cost[eq[i].goal] = sum;
flag = ;
}
}
}
if(flag) break;
}
memset(dp, , sizeof dp);
for(int i = ; i <= n; i++){
if(cost[i]==-) 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 ;
}
hdu6007 Mr. Panda and Crystal 最短路+完全背包的更多相关文章
- Mr. Panda and Crystal(最短路+完全背包)
http://codeforces.com/gym/101206/attachments 题意: T组输入,每组给出m,n,k,m为能量总数,n为水晶种类数,k为合成方案数.有的水晶可以用能量制造,有 ...
- Mr. Panda and Crystal HDU - 6007 最短路+完全背包
题目:题目链接 思路:不难看出,合成每个宝石需要消耗一定的魔力值,每个宝石有一定的收益,所以只要我们知道每个宝石合成的最小花费,该题就可以转化为一个背包容量为初始魔力值的完全背包问题,每个宝石的最小花 ...
- HDU 6007 Mr. Panda and Crystal (背包+spfa)
题意:你生活在一个魔法大陆上,你有n 魔力, 这个大陆上有m 种魔法水晶,还有n 种合成水晶的方式,每种水晶价格告诉你,并且告诉你哪些水晶你能直接造出来,哪些你必须合成才能造出来,问你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 ...
- 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 ...
- Gym101194J Mr.Panda and TubeMaster 二分图、费用流
传送门 看到这张图,是一个网格图,而且有回路限制,不难想到黑白染色. 一般来说我们对一张图黑白染色之后都是黑色点向白色点连边,但是这道题往这边想似乎就想不出建图方法了,因为"一个格子强制流满 ...
- Gym 101194C / UVALive 7899 - Mr. Panda and Strips - [set][2016 EC-Final Problem C]
题目链接: http://codeforces.com/gym/101194/attachments https://icpcarchive.ecs.baylor.edu/index.php?opti ...
随机推荐
- DevExpress中的lookupedit的使用方法详解
摘自: http://***/zh-CN/Info/catalog/17631.html 概述:本文详细介绍了DevExpress中的lookupedit的使用方法. 绑定数据源: 1 2 3 l ...
- Index 和 Type 的区别
原文: Index vs. Type By Adrien Grand 译者: fengchang 对于 ES 的新用户来说,有一个常见的问题:要存储一批新的数据时,应该在已有 index 里新建一个 ...
- 【JavaScript】DAG(有向无环图),以及相关的JS库
rappid在线设计器:http://www.jointjs.com/rappid#bc0d3f72-102b-4e6a-8663-00af78da3a2c NorthwoodsSoftware/Go ...
- NTP for Linux
一.服务概述 NTP(network time protocol 网络时间协议)服务器是用来使计算机时间同步化的一种协议,它可以使计算机对其服务器或时钟源做同步化,提供高精度的时间校正,在LAN上与 ...
- Word2007中插入公式之后,公式上下有很大的空白
word 2007 选中一个公式,选择页面布局,点击页面设置右下角的小箭头,在弹出的对话框中,选择文档网格,在网格选项中选择无网格,确定,行距正常了. 选择一个公式,所有的公式行距都会变. Word ...
- Hibernate关系映射(三) 多对一和一对多
一.多对一 学生Student和班级Grade实现多对一,多个学生对应一个班级. Student.java实体类,映射了班级的属性. package com.lxit.entity; import j ...
- python 学习定时任务apscheduler模块
最近在解决定时任务问题找到了apscheduler模块,贴一段代码 from apscheduler.schedulers.blocking import BlockingSchedulerimpor ...
- IT痴汉的工作现状36-做好准备再上路
软件开发流程管理是採用瀑布式好还是敏捷好? 如今非常多人会选择敏捷.由于眼下的现状是需求的变化是一天一个样,这是当前(移动)互联网的飞速发展所带来的.当我们仍採用原始的先做全盘的计划.然后在按部就班的 ...
- 数字图像和视频处理的基础-第4周运动预计matlab练习题
In this problem you will perform block matching motion estimation between two consecutive video fram ...
- 事件总线框架---Otto
我们假设这样一种业务场景,现在在做一款及时聊天应用,我们在聊天页面进行收发信息,同时也要实时更新前一页面的聊天记录,这时我们该如何去实现?说说我以前的实现策略,我使用的是广播接收器BroadCastR ...