Kefa and Dishes

Problem's Link


Mean:

菜单上有n道菜,需要点m道。每道菜的美味值为ai。

有k个规则,每个规则:在吃完第xi道菜后接着吃yi可以多获得vi的美味值。

问:最多可以获得多少美味值?

(1≤m≤n≤18,0≤k≤n∗(n−1))

analyse:

经典的状压DP。

由于最多18道菜,可用一个数s(s<=2^18)来唯一标识一种状态。

对于一个状态s,枚举两个位置i和j:i从已选择的菜中选定,j从未选择的菜中选定。

下一个状态ss的就是:吃完i后接着吃j的所有状态的最大值。

转移过程:ss=s|(1<<j)

状态转移方程:dp[ss][j]=max(dp[ss][j],dp[s][i]+sa[j]+ad[i][j])

答案就是所有选择数量达到m的状态的最大值。

Time complexity: O( (2^n) *( n^2) )

view code

dp + 状态压缩 - Codeforces 580D Kefa and Dishes的更多相关文章

  1. codeforces 580D Kefa and Dishes(状压dp)

    题意:给定n个菜,每个菜都有一个价值,给定k个规则,每个规则描述吃菜的顺序:i j w,按照先吃i接着吃j,可以多增加w的价值.问如果吃m个菜,最大价值是多大.其中n<=18 思路:一看n这么小 ...

  2. Codeforces 580D Kefa and Dishes(状态压缩DP)

    题目链接:http://codeforces.com/problemset/problem/580/D 题目大意:有n盘菜每个菜都有一个满意度,k个规则,每个规则由x y c组成,表示如果再y之前吃x ...

  3. Codeforces 580D Kefa and Dishes(状压DP)

    题目大概说要吃掉n个食物里m个,吃掉各个食物都会得到一定的满意度,有些食物如果在某些食物之后吃还会增加满意度,问怎么吃满意度最高. dp[S][i]表示已经吃掉的食物集合是S且刚吃的是第i个食物的最大 ...

  4. codeforces 580D. Kefa and Dishes

    time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standa ...

  5. HDU 4336 Card Collector (期望DP+状态压缩 或者 状态压缩+容斥)

    题意:有N(1<=N<=20)张卡片,每包中含有这些卡片的概率,每包至多一张卡片,可能没有卡片.求需要买多少包才能拿到所以的N张卡片,求次数的期望. 析:期望DP,是很容易看出来的,然后由 ...

  6. HDU 1074 Doing Homework (dp+状态压缩)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1074 题目大意:学生要完成各科作业, 给出各科老师给出交作业的期限和学生完成该科所需时间, 如果逾期一 ...

  7. hdu_4352_XHXJ's LIS(数位DP+状态压缩)

    题目连接:hdu_4352_XHXJ's LIS 题意:这题花大篇篇幅来介绍电子科大的一个传奇学姐,最后几句话才是题意,这题意思就是给你一个LL范围内的区间,问你在这个区间内最长递增子序列长度恰为K的 ...

  8. hdu 4352 数位dp + 状态压缩

    XHXJ's LIS Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  9. 【bzoj1076】[SCOI2008]奖励关 期望dp+状态压缩dp

    题目描述 你正在玩你最喜欢的电子游戏,并且刚刚进入一个奖励关.在这个奖励关里,系统将依次随机抛出k次宝物,每次你都可以选择吃或者不吃(必须在抛出下一个宝物之前做出选择,且现在决定不吃的宝物以后也不能再 ...

随机推荐

  1. Cocos2d-x -- 图片菜单按钮

    Scene* MainMenu::createScene() { // 'scene' is an autorelease object auto scene = Scene::create(); / ...

  2. hdu 1087 简单dp

    思路和2391一样的.. <span style="font-size:24px;">#include<stdio.h> #include<strin ...

  3. Python 创建元组tuple

    创建tupletuple是另一种有序的列表,中文翻译为“ 元组 ”.tuple 和 list 非常类似,但是,tuple一旦创建完毕,就不能修改了.同样是表示班里同学的名称,用tuple表示如下:&g ...

  4. 关于ibatis的实体类部分属性无法映射

    今天在编码中不小心就遇到了一个ibatis初学者偶尔会遇到的问题. 先来看这张图中的DictionPo的部分属性赋值都为空.其实,数据库中是有数据的. 再来看看mapper的写法 上面那个对象查询语句 ...

  5. ‘close’ was not declared in this scope

    ‘close’ was not declared in this scope ‘read’ was not declared in this scope ‘sysconf’ was not decla ...

  6. 【Linux】df命令

    用途 df命令主要用于检查Linux服务器的文件系统的磁盘空间占用情况 全称 df的全称为:Disk Free 参数 -a :全部文件系统列表 -h :方便阅读显示 -H :等于"-h&qu ...

  7. 【linux】查看内存和CPU使用情况

    1.内存命令:free 解释:以上数据单位KB. 所以,上面的mem物理内存共1G 下面是对这些数值的解释: total:总计物理内存的大小. used:已使用多大. free:可用有多少. Shar ...

  8. Git 修改用户名以及提交邮箱

    问题背景: 在已毕业师兄的电脑上提交自己的 Github 代码,(尽管有重新设置了 自己的SSH),但是 Github网站提交结果却显示师兄提交的: 验证当前本地属性: 怎么知道本地有设置?git c ...

  9. lamp 一键安装

    下载安装(ssh登录服务器,执行如下操作即可,需要用到root用户权限来安装) 源码编译安装 wget http://dl.wdlinux.cn:5180/lanmp_laster.tar.gz ta ...

  10. Linux命令-目录处理命令:mv

    注意:在linux下面,剪切文件和改名是同一个命令mv,而不是两个独立的命令. mv /tmp/beijing/chaoyangqu /root 移动chaoyangqu目录到root目录下面 mv ...