
状态压缩dp
文章平均质量分 74
角落里的阳光Lee
这个作者很懒,什么都没留下…
展开
-
hdu 4628 Pieces 多校第三场
状态:dp[st]表示在状态st下把所有字符删除的最少次数。 如果当前状态为回文,则dp[st]=1; 否则 dp[st]=当前st状态的字符数; 转移方程 dp[st]=min(dp[st],dp[tt]+dp[tt^st]) 其中 t#include #include #include #include #include #include #include原创 2013-07-30 21:13:33 · 771 阅读 · 0 评论 -
hdu 4649 Professor Tian 多校第五场
状态压缩——把数据转换成20位的01来进行运算 因为只有20位,而且&,|,^都不会进位,那么一位一位地看,每一位不是0就是1,这样求出每一位是1的概率,再乘以该位的十进制数,累加,就得到了总体的期望。 对于每一位,状态转移方程如下: dp[i][j]表示该位取前i个数,运算得到j(0或1)的概率是多少。 dp[i][1]=dp[i][1]*p[i]+根据不同运算符原创 2013-08-06 20:04:07 · 684 阅读 · 0 评论 -
UVA 1099 Sharing Chocolate
#include #include #include #include #include #include #include #include using namespace std; #define clr(a, x) memset(a, x, sizeof(a)) #define rep(i, n) for (int i = 0; i < (int)(n); i++) #def原创 2013-08-03 12:16:23 · 1068 阅读 · 0 评论 -
UVA 11795 Mega Man's Mission
洛克人最初有一把武器,可以杀死某些机器人,每杀死一个机器人,就可以获得他的武器,每个武器可以杀死某些特定的机器人,计算出杀死这些所有的机器人顺序总数? 简单状态压缩DP。dp[ S ] 表示杀死机器人状态为S(1表示死,0活着)的总方案数,先预处理出对于每个S,所获得的武器能够杀死哪些机器人。1表示可杀,0不可以。状态转移方程dp[S] += dp[S0]; 其中 S0为S的子集 即S原创 2013-08-10 16:26:43 · 639 阅读 · 0 评论 -
UVA 10817 Headmaster's Headache
状态压缩dp,用两位二进制来表示一门课的信息。 code: #include #include #include #include #include using namespace std; #define clr(a,b) memset((a),b,sizeof(a)) const int maxn = 10010; typedef long long lld;原创 2013-08-11 17:28:56 · 590 阅读 · 0 评论