HDU_3182_Hamburger Magi_状态压缩dp
Hamburger Magi
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 509 Accepted Submission(s): 163
Let’s give The Hamburger Magi a nickname “HamMagi”, HamMagi don’t only love to eat but also to make hamburgers, he makes N hamburgers, and he gives these each hamburger a value as Vi, and each will cost him Ei energy, (He can use in total M energy each day). In addition, some hamburgers can’t be made directly, for example, HamMagi can make a “Big Mac” only if “New Orleams roasted burger combo” and “Mexican twister combo” are all already made. Of course, he will only make each kind of hamburger once within a single day. Now he wants to know the maximal total value he can get after the whole day’s hard work, but he is too tired so this is your task now!
The first line of each case consists of two integers N,E(1<=N<=15,0<=E<=100) , indicating there are N kinds of hamburgers can be made and the initial energy he has.
The second line of each case contains N integers V1,V2…VN, (Vi<=1000)indicating the value of each kind of hamburger.
The third line of each case contains N integers E1,E2…EN, (Ei<=100)indicating the energy each kind of hamburger cost.
Then N lines follow, each line starts with an integer Qi, then Qi integers follow, indicating the hamburgers that making ith hamburger needs.
4 90
243 464 307 298
79 58 0 72
3 2 3 4
2 1 4
1 1
0
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std; struct Node
{
int value;
int cost;
int cnt;
int rela[];
} ham[]; struct Node1
{
int value;
int cost;
};
Node1 dp[<<];
int main()
{
int t,kind,ener;
scanf("%d",&t);
while(t--)
{
memset(dp,-,sizeof(dp));
scanf("%d%d",&kind,&ener);
for(int i=; i<=kind; i++)
scanf("%d",&ham[i].value);
for(int i=; i<=kind; i++)
scanf("%d",&ham[i].cost);
for(int i=; i<=kind; i++)
{
scanf("%d",&ham[i].cnt);
for(int j=; j<ham[i].cnt; j++)
scanf("%d",&ham[i].rela[j]);
}
int en=<<kind;
int ans=;
dp[].cost=dp[].value=;
for(int j=; j<en; j++)
{
if(dp[j].value==-)
continue;
for(int i=; i<=kind; i++)
{
int tem=<<(kind-i);
if(j&tem)
continue;
int flag=;
for(int k=; k<ham[i].cnt; k++)
{
int temp=<<(kind-ham[i].rela[k]);
if(!(temp&j))
{
flag=;
break;
}
}
if(flag)
{
dp[j+tem].value=dp[j].value+ham[i].value;
dp[j+tem].cost=dp[j].cost+ham[i].cost;
}
}
}
for(int i=; i<en; i++)
{
if(dp[i].cost>ener)
continue;
if(ans<dp[i].value)
ans=dp[i].value;
}
printf("%d\n",ans);
}
return ;
}
HDU_3182_Hamburger Magi_状态压缩dp的更多相关文章
- hoj2662 状态压缩dp
Pieces Assignment My Tags (Edit) Source : zhouguyue Time limit : 1 sec Memory limit : 64 M S ...
- POJ 3254 Corn Fields(状态压缩DP)
Corn Fields Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 4739 Accepted: 2506 Descr ...
- [知识点]状态压缩DP
// 此博文为迁移而来,写于2015年7月15日,不代表本人现在的观点与看法.原始地址:http://blog.sina.com.cn/s/blog_6022c4720102w6jf.html 1.前 ...
- HDU-4529 郑厂长系列故事——N骑士问题 状态压缩DP
题意:给定一个合法的八皇后棋盘,现在给定1-10个骑士,问这些骑士不能够相互攻击的拜访方式有多少种. 分析:一开始想着搜索写,发现该题和八皇后不同,八皇后每一行只能够摆放一个棋子,因此搜索收敛的很快, ...
- DP大作战—状态压缩dp
题目描述 阿姆斯特朗回旋加速式阿姆斯特朗炮是一种非常厉害的武器,这种武器可以毁灭自身同行同列两个单位范围内的所有其他单位(其实就是十字型),听起来比红警里面的法国巨炮可是厉害多了.现在,零崎要在地图上 ...
- 状态压缩dp问题
问题:Ignatius has just come back school from the 30th ACM/ICPC. Now he has a lot of homework to do. Ev ...
- BZOJ-1226 学校食堂Dining 状态压缩DP
1226: [SDOI2009]学校食堂Dining Time Limit: 10 Sec Memory Limit: 259 MB Submit: 588 Solved: 360 [Submit][ ...
- Marriage Ceremonies(状态压缩dp)
Marriage Ceremonies Time Limit:2000MS Memory Limit:32768KB 64bit IO Format:%lld & %llu ...
- HDU 1074 (状态压缩DP)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1074 题目大意:有N个作业(N<=15),每个作业需耗时,有一个截止期限.超期多少天就要扣多少 ...
随机推荐
- C#高级编程五十二天----有序列表
有序列表 假设须要基于对全部集合排序,就能够使用SortedList<TKey,TValue>类.这个类依照键给元素排序.这个集合中的值和键都能够使用随意类型. 以下的样例创建了一个有序列 ...
- firewalld filter
实现 firewalld 的filter 功能 1. 关闭 INPUT ,关闭OUTPUT (设置黑名单) 任何主机 都 ping 不通 本主机 1>命令 : iptables -P INP ...
- javascript的继承方法
一.构造函数继承 该方法最简单,使用call或者apply方法,将父对象的构造函数绑定到子对象上. function Parent(name){ this.name = name; this.colo ...
- “指定的SAS安装数据(sid)文件不能用于选定的SAS软件订单
Sas安装指南,若拿到可用的sid文件,需要做如下修改. 使用新sid的时候,“指定的SAS安装数据(sid)文件不能用于选定的SAS软件订单”问题解决: 1.进入sas安装包,install_doc ...
- easyUI 对话框的关闭事件
有一个easyUI的dialog: <div id="dlg_Add" class="easyui-dialog" style=" width: ...
- 修改数据表的字符集为utf8mb4
修改数据表的字符集为utf8mb4
- Linux服务器 /var/spool/clientmqueue 目录下产生大量文件的删除办法
检查linux发现server中的磁盘分区空间超过98%,登录到服务器查看 [root@localhost etc]# df -hFilesystem 容量 已用 可用 已用% 挂载点/dev/hda ...
- VS-按F12无法跳转到函数定义,点击右键也无法跳转
工具->选项->项目和解决方案->常规,把“在解决方案资源管理器中跟踪活动项”反选.
- Android 通过USB查看kernel调试信息【转】
本文转载自:http://blog.csdn.net/lindonghai/article/details/51683644 前提:电脑已安装adb并可正常使用. 在调试Android驱动时,需要查看 ...
- 用C语言实现websocket服务器
Websocket Echo Server Demo 背景 嵌入式设备的应用开发大都依靠C语言来完成,我去研究如何用c语言实现websocket服务器也是为了在嵌入式设备中实现一个ip camera的 ...