题意:

      一个人做汉堡包,每个汉堡包有自己的花费和价值,某些汉堡包必须是在其他的某些汉堡包已经做好了的前提下才能制作,给你这个人的初始钱数,问最大的价值是多少。

思路:

      比较简单的一个题目,首先我们开一个数组dp[i]表示i状态(状态压缩)时的最大价值,把每一个状态都用这n个汉堡包更新一下,还的开个数组money[i]表示的是i状态是的剩余钱数,更新的时候记住一点就是每个点只能用一次,也就是当前状态里如果有i这个点,那么i不能在来更新了。


#include<stdio.h>
#include<string.h>

int
dp[1<<16];
int
cost[20] ,vie[20];
int
money[1<<16];
int
limit[20][20]; int maxx(int x ,int y)
{
return
x > y ? x : y;
} bool
ok(int ii ,int now)
{
for(int
i = 1 ;i <= limit[ii][0] ;i ++)
if(!(
now & (1 << (limit[ii][i] - 1)))) return 0;
return
1;
} int main ()
{
int
t ,n ,m ,i ,j;
scanf("%d" ,&t);
while(
t--)
{

scanf("%d %d" ,&n ,&m);
for(
i = 1 ;i <= n ; i++)
scanf("%d" ,&vie[i]);
for(
i = 1 ;i <= n ;i ++)
scanf("%d" ,&cost[i]);
for(
i = 1 ;i <= n ;i ++)
{

scanf("%d" ,&limit[i][0]);
for(
j = 1 ;j <= limit[i][0] ;j ++)
scanf("%d" ,&limit[i][j]);
} for(
i = 0 ;i <= (1 << n) - 1 ;i ++)
dp[i] = -1000000000 ,money[i] = 0;
dp[0] = 0 ,money[0] = m;
int
Ans = 0;
for(
i = 0 ;i <= (1<<n) - 1 ;i ++)
for(
j = 1 ;j <= n ;j ++)
{
if(
i & (1 << (j - 1))) continue;
int
now = i|(1<<(j-1));
if(
dp[now] < dp[i] + vie[j] && money[i] >= cost[j] && ok(j ,i))
{

dp[now] = dp[i] + vie[j];
Ans = maxx(dp[now] ,Ans);
money[now] = money[i] - cost[j];
}
}

printf("%d\n" ,Ans);
}
return
0;
}

hdu3182 状态压缩dp的更多相关文章

  1. hoj2662 状态压缩dp

    Pieces Assignment My Tags   (Edit)   Source : zhouguyue   Time limit : 1 sec   Memory limit : 64 M S ...

  2. POJ 3254 Corn Fields(状态压缩DP)

    Corn Fields Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 4739   Accepted: 2506 Descr ...

  3. [知识点]状态压缩DP

    // 此博文为迁移而来,写于2015年7月15日,不代表本人现在的观点与看法.原始地址:http://blog.sina.com.cn/s/blog_6022c4720102w6jf.html 1.前 ...

  4. HDU-4529 郑厂长系列故事——N骑士问题 状态压缩DP

    题意:给定一个合法的八皇后棋盘,现在给定1-10个骑士,问这些骑士不能够相互攻击的拜访方式有多少种. 分析:一开始想着搜索写,发现该题和八皇后不同,八皇后每一行只能够摆放一个棋子,因此搜索收敛的很快, ...

  5. DP大作战—状态压缩dp

    题目描述 阿姆斯特朗回旋加速式阿姆斯特朗炮是一种非常厉害的武器,这种武器可以毁灭自身同行同列两个单位范围内的所有其他单位(其实就是十字型),听起来比红警里面的法国巨炮可是厉害多了.现在,零崎要在地图上 ...

  6. 状态压缩dp问题

    问题:Ignatius has just come back school from the 30th ACM/ICPC. Now he has a lot of homework to do. Ev ...

  7. BZOJ-1226 学校食堂Dining 状态压缩DP

    1226: [SDOI2009]学校食堂Dining Time Limit: 10 Sec Memory Limit: 259 MB Submit: 588 Solved: 360 [Submit][ ...

  8. Marriage Ceremonies(状态压缩dp)

     Marriage Ceremonies Time Limit:2000MS     Memory Limit:32768KB     64bit IO Format:%lld & %llu ...

  9. HDU 1074 (状态压缩DP)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1074 题目大意:有N个作业(N<=15),每个作业需耗时,有一个截止期限.超期多少天就要扣多少 ...

随机推荐

  1. pytorch(06)autograd与逻辑回归

    autograd与逻辑回归 自动求导系统中两个常用的方法: torch.autograd.backward and torch.autograd.grad 演示理解一阶导数.二阶导数的求导过程 理解自 ...

  2. 恭喜!Apache Hudi社区新晋两位Committer

    1. 介绍 经过Apache Hudi项目委员会讨论及投票,向WangXiangHu和LiWei 2人发出Committer邀请,2人均已接受邀请并顺利成为Committer,也使得Apache Hu ...

  3. 现代c++模板元编程:遍历tuple

    tuple是c++11新增的数据结构,通过tuple我们可以方便地把各种不同类型的数据组合在一起.有了这样的数据结构我们就可以轻松模拟多值返回等技巧了. tuple和其他的容器不同,标准库没有提供适用 ...

  4. c语言跨文件调用函数中声明的变量

    转载:weixin_33885253 变量的作用域 变量根据其作用域有全局变量和局部变量之分.全局变量作用域是整个文件,并且可以使用关键字extern达到跨文件调用的目的.但是局部变量值作用于它当前所 ...

  5. teprunner测试平台用例前置模块开发

    本文开发内容 现在正式进入测试相关功能开发.teprunner测试平台底层是pytest,中间层是tep,还没了解的朋友可以先看看tep的文章,整个平台的设计思路和后面用例的执行都会基于这个工具.te ...

  6. 快速创建你的第一个Spring Boot项目

    1. 创建工程 打开idea,利用Spring Boot搭建一个web工程,切身体会一下Spring Boot所带来的魅力!看看SpringBoot是如何快速搭建一个web项目. New-->P ...

  7. iovec结构体使用说明

    http://blog.163.com/lichuan0502@126/blog/static/9933534820111033228285/

  8. 【Django】有关多用户管理的一点小经验分享

    前言 最近,笔者因为需要开发一个系统作为毕设的展示,因此就产生了有关多用户管理的问题.在这里我把自己的需求重新阐明一下:能够通过Django自带的用户管理框架,实现多用户的管理,例如登录.登出.ses ...

  9. ICMP主机探测过程

    #1from scapy.all import * from random import randint from optparse import OptionParser #2 对用户输入的参数进行 ...

  10. [状压DP]关灯问题II

    关 灯 问 题 I I 关灯问题II 关灯问题II 题目描述 现有n盏灯,以及 m m m个按钮.每个按钮可以同时控制这 n n n盏灯--按下了第 i i i个按钮,对于所有的灯都有一个效果.按下i ...