
状态压缩
空白君有着一把空白键blanKey
即使世界如此残酷,我们仍是努力挣扎着
/*算了,退役了,不挣扎了QWQ*/
展开
-
ZOJ Most Powerful (状态压缩DP)
题目点我点我点我题目大意:有n种原子,两种原子相碰撞的话就会产生能量,其中的一种原子会消失。问这n种原子能产生的能量最大是多少。思路:简单的状态压缩DP,我是用1代表灭,0代表存活。 状态 :dp[state], 状态为state时的最大能量转移 :dp[state | (1 << j)] = max(dp[state | (1 << j)], dp[state] + a[i][j]) 表示的是原创 2015-11-22 21:39:21 · 471 阅读 · 0 评论 -
hdu3811 Permutation (状态压缩DP)
题目点我点我点我 题目大意:题目给出m对 a b,表示a位置放b,问你满足其中至少一对关系的总排列数。思路:表面上看似容斥定理,至于行不行我也没试过,用状态压缩DP就奇快,dp[i]记录的是第i种状态不符合a位置放b的情况的数目,dp[(1< #include <stdio.h> #include <string.h> #include <iostream> #include <algorithm原创 2015-11-23 23:48:09 · 500 阅读 · 0 评论 -
POJ1185 炮兵阵地 (状态压缩DP)
题目点我点我点我 题目大意:简单不多说思路:先全列出所有可行的状态,放炮兵就为1,不放就为0,这时先不考虑地形,把可行状态列出来后,再与地形匹配,山地H为1,平原p为0,这样两者以二进制匹配得数为0则匹配成功。 然后第i行(i>2)只由第i-1行的状态和第i-2行的状态决定,dp[i][j][k]代表第i行的状态为j,第i-1行状态为k,所以有状态转移方程 dp[i][j][k]=max(dp[原创 2015-11-18 22:42:52 · 388 阅读 · 0 评论 -
POJ3254 Corn Fields (状态压缩DP)
题目点我点我点我题意:给出一个n行m列的草地,1表示肥沃,0表示贫瘠,现在要把一些牛放在肥沃的草地上,但是要求所有牛不能相邻,问你有多少种放法。思路:利用一个state数组记录所有可行状态的情况,将输入的每一行数取二进制的相反数,与state的可行状态相匹配,每一种匹配的状况再与前一行状况匹配,dp[i][j]代表第i行的第j种状态,记录第i行的第j种状态的方案数,利用层层递推,最后将最后一行所有状原创 2015-11-17 21:36:15 · 385 阅读 · 0 评论 -
POJ2411 Mondriaan's Dream(状态压缩DP)
人生第一道状态压缩DP,我这个弱渣想了N天终于弄懂了◑﹏◐题目大意:求1*2的地板填满n*m的砖块有多少种不同的方法思路:位运算+DFS+状态压缩。 当高度和宽度都为奇数时答案为0。 对于每一个位置,我们有三种放置方法: 1. 竖直放置 2. 水平放置 3. 不放置 d为当前列号 ,初始化d, now, pre都为0;对应以上三种放置方法,now, pre的调整为: 1. d = d原创 2015-11-16 22:14:16 · 540 阅读 · 0 评论 -
hdu 2167 Pebbles (状态压缩DP)
题目点我点我点我 题目大意:给你一个矩阵,让你取其中的数使得这些数的和尽可能地大,并且取的数周围的8个都不能取。 解题思路:状态压缩DP,预处理出来哪些状态可以用的,然后枚举每种可行状态,最后max一下求得最大值即可。 dp[i][j]表示前i行状态为j的和。 转移方程为:dp[i][j] = max(dp[i][j],dp[i-1][k]+sum[i][j]),其中k为前原创 2016-08-10 15:38:19 · 409 阅读 · 0 评论