hdu4778(状态压缩dp)
题意:
有G种颜色的宝石,共B袋。两个人轮流拿宝石,每次从B袋中拿一袋,把其中的所有宝石倒入一个公共容器,每袋宝石只能取一次。
当容器中有S个相同颜色的宝石时,将失去这S个宝石,当前操作者得到一个魔法石,每次得到一个魔法石,作为奖励,他都可以再次拿一袋宝石倒入容器。
双方都想让自己的魔法石尽量多,Alice先手,问在最优操作下,Alice 和 Bob的魔法石差是多少。
0 <= B <= 21, 0 <= G <= 8, 0 < n <= 10, S < 20。
分析:
因为数据很小,所以考虑用状态压缩来表示
对于状态S,若某位为0,则说明该位的袋子没有丢到容器中,若某位位1,则说明该袋子已经丢到了容器中,f[S]表示S状态下,先手-后手的最大值
显然答案ans=f[0]
考虑初始情况f[(1<<n)-1]=0(因为这表示所有袋子都已经丢到了容器中,在剩余的袋子中,先手后手都无法取,0-0=0)
枚举状态S的每一个数字0的位置i
f[S]由f[S|1<<i]逆推得到
若将i丢进容器,没有获得魔法石,那么f[S]=max(f[S],-f[S|1<<i]) (因为交换了先手后手顺序)
若将i丢进容器,获得了魔法石,那么f[S]=max(f[S],f[S|1<<i]+丢进i获得的魔法石) (因为获得了魔法石,所以先手仍旧是先手)
注意dp过程中计算某个位置的贡献,这是可以预处理的
复杂度O(2^B * B * G)
hdu4778(状态压缩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),每个作业需耗时,有一个截止期限.超期多少天就要扣多少 ...
- HDU 4511 (AC自动机+状态压缩DP)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4511 题目大意:从1走到N,中间可以选择性经过某些点,比如1->N,或1->2-> ...
随机推荐
- spring framework 第一章数据库管理(data access)
spring data access 的网址:https://docs.spring.io/spring/docs/current/spring-framework-reference/index.h ...
- Farseer.net轻量级ORM开源框架 V1.2版本升级消息
V1.1到V1.2的更新,重构了很多类及方法,其中主要做了性能优化(取消所有反射,使用表达式树+缓存).解耦了SQL生成层(没有实体.队列的依赖,所有数据均通过表达式树传递解析) 先上内部更新历史记录 ...
- vue框架的知识
基础:实例----组件----指令----选项-----计算属性----事件绑定----模板渲染-----内置动画 ---组件交互----路由. vuejs干了什么事情:数据渲染/数据同步 组件化/模 ...
- (转)淘淘商城系列——dubbo监控中心
http://blog.csdn.net/yerenyuan_pku/article/details/72777623 之前我们就已学过了dubbo,想必大家对dubbo的架构有所了解,dubbo的架 ...
- 数组,寻找第K大的数
时间复杂度 O(n) def partition(data,left,right): if (len(data)<=0 or left<0 or right>=len(data)): ...
- sql server数据类型与其他数据库数据类型对应关系
SELECT * FROM msdb.dbo.MSdatatype_mappings SELECT * FROM msdb.dbo.sysdatatypemappings
- 安装钩子 SetWindowsHookE
SetWindowsHookEx 函数将应用程序定义的钩子安装到一个钩链.要将安装一个钩子来监测系统的某些类型的事件.这些事件是与特定的线程或所有线程中调用线程作为同一桌面相关联. Syntax HH ...
- console.log()与console.dir()
console.log()可以取代alert()或document.write(),在网页脚本中使用console.log()时,会在浏览器控制台打印出信息. console.dir()可以显示一个对 ...
- Oracle使用plsql连不上本地数据库,cmd中使用sqlplus连的上的可能解决方案
1.无监听程序 原因: 最有可能是oracle监听的服务没有启动起来. 2.ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务 原因: 1.服务没有配置127.0.0.1或监听程序没 ...
- jdk5.0新增两个线程创建方法
1.实现callable接口 import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; ...