状压DP
Fb_by
这个作者很懒,什么都没留下…
展开
-
UVA 11825【状态压缩】
题意:有一个由编号0~n-1的n台计算机组成的网络,一共有n种服务,每台计算机上都运行着全部服务,对于每台计算机,你可以选择停止一项服务,这个行为会导致与这台计算机和与他相连的其他计算机上的这项服务都停止(原来已经停止的继续保持停止状态)。求最多能使多少个服务瘫痪(即没有任何一台计算机在运行这项服务)。分析:用2进制表示每台电脑的集合有哪些电脑a[i],将这些集合用位运算求出若干a[i原创 2016-03-23 22:42:50 · 344 阅读 · 0 评论 -
UVA 1099【状态压缩】
题意:有一块x*y的巧克力,问你是否可以分成n块大小分别为aI的小巧克力分析:n然后枚举s的子集,判断子集能否构成。代码:#include#include#include#include#include#include#include#include#include#include#include#define INF 0x3f3f3f3f#define M原创 2016-03-24 21:41:31 · 528 阅读 · 0 评论 -
UVA 11795 Mega Man's Mission 【状压dp】
题意:有n+1个01串,第一个代表已经有了可以消灭某些人的武器,每个武器只能杀死特定的机器,接下来n行代表,每消灭一个机器人将会得到他的武器。 问可以消灭所有机器人的顺序方案总数。分析:n很小,可以用二进制存下每种枪的状态,考虑状压dp。设dp[s]表示能消灭的人的状态s的方案数。dp[s]+=dp[{s-1}];//s状态可以由s少了其中为1的一位的状态杀掉这一位得来。代原创 2016-04-08 20:55:11 · 295 阅读 · 0 评论 -
bzoj 2064: 分裂【状态压缩】
链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2064题意:将n个数以最少操作变成m个数,操作为合并分解。分析:前后数的总和不变,我们可以将n个数合并成一个数,然后分解成m个数,操作数是n+m-2,但是有些数是不用合并的,枚举n和m的子集,每有一对相等ans-2.这时我们取n的为正数,m的为负数。代码:#include#原创 2016-03-28 14:46:11 · 585 阅读 · 1 评论 -
第五届华中区程序设计邀请赛 网络赛Calculation E 【状压dp】
链接:http://acm.whu.edu.cn/land/problem/detail?problem_id=1608题意:把n个数分成若干堆(一个数只能在一堆),若一堆经过+or-操作等于m,ans+1,问最大的ans。分析:n只有14,我们考虑状压,可以知道哪些数在一个集合(s)得到和sum[s],然后我们可以枚举s的子集(s0),当sum[s]或sum[s]-sum[s0]-sum原创 2016-04-10 17:56:33 · 294 阅读 · 0 评论 -
hdu5823 color II 【状压dp(非正解)】
链接:http://acm.hdu.edu.cn/showproblem.php?pid=5823题意:有n(n现在要你求出这个图的所有非空真子集需要最少的颜色将所有点染色,相连的两个点颜色不能一样。分析:如果一个集合s的子集s0是一个独立集,那么s最少的颜色就不是由s0决定,但是可以由s-s0求出。dp[s]=min(dp[s],dp[s-s0]+1)。代码:#inclu原创 2016-08-12 13:33:00 · 381 阅读 · 0 评论 -
hdu5816 Hearthstone 【状压dp】
链接:http://acm.hdu.edu.cn/showproblem.php?pid=5816题意:对方有p滴血,你的牌库有n张A牌,m张B牌;A牌的效果是再抽两张牌,B牌的效果对对方造成xi滴血伤害。你现在手牌为空,现在可以抽一张牌,问一回合打败对手的概率。分析:n+m假设通过A牌我们已经抽了x张A牌,y张B牌,那么我们可以知道接下来还能不抽牌:判断还有没有A牌剩余 x*2原创 2016-08-13 17:29:02 · 378 阅读 · 0 评论