码迷,mamicode.com
首页 >  
搜索关键字:状态压缩 198    ( 1179个结果
POJ - 1691 Painting A Board (状态压缩 + 暴力)
题目大意:要将一个大矩形內的所有小矩形涂色,涂色要求,只有该矩形上面的所有矩形都涂色了才可以涂该颜色,换一种填涂的颜色就要花费一点体力值,问填涂完需要花费的最小体力值解题思路:先处理一下填涂该矩形的前提条件,我用了一个can数组表示填涂该矩形时要满足的状态量 用dp[color][state]表示当前用的颜色是color,填涂的状态为state时所用的最少体力值 然后暴力得出转换和结果#incl...
分类:其他好文   时间:2015-07-18 17:06:05    阅读次数:143
【算法学习笔记】74. 枚举 状态压缩 填充方案 SJTU OJ 1391 畅畅的牙签袋(改)
一开始想贪心,类似启发式搜索的感觉...后来觉得不行,而且很难写。不如就枚举。可以通过0到2^W的中的每一个数的二进制形式来对应,第一行每个位置是否作为中心点放入十字格子的情况。当此处为0时表示不放,1时表示放。为什么只枚举第一行的所有情况就可以了呢。因为第一行的情况确定之后,我们可以通过推理先改变...
分类:编程语言   时间:2015-07-18 15:19:37    阅读次数:126
SGU - 132 Another Chocolate Maniac (状态压缩)
题目大意:有一个大小为N * M的蛋糕,蛋糕上面有k根蜡烛,现在要求你在蛋糕上面铺1 * 2和2 * 1的巧克力 使得所铺的巧克力最少,且蛋糕上面没有空余地方可放巧克力了(只存在1 * 1的没铺的方格)解题思路:1 * 1的空闲方格由三行决定,上一行,当前行和下一行,如果只考虑两行的话,就比较难了 所以我们用dp[i][s1][s2]表示第i行的状态是s1,第i + 1行的状态是s2的情况下放的...
分类:其他好文   时间:2015-07-18 11:02:57    阅读次数:138
【上海交大oj】畅畅的牙签袋(状态压缩dp)
1383. 畅畅的牙签袋题目描述畅畅说:“你们都说窝脑子瓦特了,我看你们才是脑子瓦特嘞- -”为了阻挠我们再次揭露他的无chǐ,畅畅妄图破坏我们的显示器,他拿出了自己收集的牙签包装袋,其大小是1×2的矩形,他想用密铺的方式把显示器全部遮挡住。显示器大小是W×H的矩形,畅畅把包装袋背面涂上了胶水,开始...
分类:其他好文   时间:2015-07-18 00:24:36    阅读次数:141
1252 - Twenty Questions(状态压缩DP)
经典的状态压缩DP 。  有没有感觉这道题和什么东西有点像?  没错,是01背包 。 将特征看作物品 , 只不过这里的状态有点复杂, 需要用一个集合才能表示它, 所以我们用d[s][a]来表示,已经询问了特征集s , 假设我们要猜的物品是w ,w所具备的特征集为a ,此时还要询问的最小次数 。   显然a是s的子集,而且要注意本题的要求, 求的是最小化的最大询问次数 。也就是说无论猜哪个物品,猜这...
分类:其他好文   时间:2015-07-17 22:51:50    阅读次数:142
SGU - 131 Hardwood floor (状态压缩)
题目大意:要求在n *m的网格上面铺满2 * 1的I型砖头活着2 * 2(缺了一个1 *1)的L型砖头,问有多少中铺法解题思路:和POJ - 2411 Mondriaan’s Dream类似 这里用s1表示上一行的状态,s2表示当前行的状态,b1表示上一行的上一列是否对当前列有影响,b2表示当前行的上一列是否对当前列有影响 可得到一张状态转换表 以上摘自这里写链接内容#include<cs...
分类:其他好文   时间:2015-07-17 18:51:13    阅读次数:193
ZOJ - 3471 Most Powerful (状态压缩)
题目大意:有n种原子,两种原子相碰撞的话就会产生能量,其中的一种原子会消失。问这n种原子能产生的能量最大是多少解题思路:用0表示该原子还没消失,1表示该原子已经消失,那么就可以得到状态转移方程了 dp[state | (1 << i)] = max(dp[state | (1 << i)], dp[state] + power[j][i]) 上面的方程表示的是在state的情况下,用j原子去碰撞...
分类:其他好文   时间:2015-07-17 09:44:54    阅读次数:128
POJ - 2411 Mondriaan's Dream (状态压缩)
题目大意:要在n * m的网格上面铺满1 * 2或者 2 * 1的砖块,问有多少种铺放的方式解题思路:刚开始用了3进制表示每行的状态,0表示的是2 * 1的砖块的一部分,1表示的是1 * 2的砖块的上部分,2表示的是1 * 2的砖块的下部分,然后像poj-1185炮兵阵地 那题一样去解决就好了,结果发现状态太多了,会TLE,只得放弃了 后面参考了下别人的代码,可以将其转换成二进制表示形式的,0代表...
分类:其他好文   时间:2015-07-16 22:19:57    阅读次数:146
uva 1252(状态压缩dp)
题意:有n个二进制串,长度都是m且都不相同,问最少询问多少个问题可以把这n个串完全区分开。 题解:1<=m<=11,从这个范围就可以推测是状态压缩,那么dp肯定要有一维表示提问的问题,然后另一位就是根据提出的问题把串分类,一种是符合提出的问题的状态,另一种不符合。这样f[i][j]表示在问了问题i的状态下答案是状态j时还要提出多少个问题才能把所有串区分开。 如果找到在问题i下和答案j相同的串只有...
分类:其他好文   时间:2015-07-16 22:11:57    阅读次数:128
10817 - Headmaster's Headache(校长的烦恼)
经典的状态压缩DP 。 根据DP的阶段定义,我们需要枚举每一个教师进行递推,但是由于每个教师可以教授的课程是复杂多样的,所以使得状态变得难以转移 。那么要怎么样表示状态呢? 显然增加一两个维度是无法胜任的,所以我们可以用二进制枚举子集的方法,用一个整数通过位运算充当一个集合 。 C++提供的位运算符极像对集合的操作,我们恰好可以利用这一点 。 用d[i][s1][s2]表示考虑了前i个人时的最...
分类:其他好文   时间:2015-07-15 22:55:03    阅读次数:163
1179条   上一页 1 ... 65 66 67 68 69 ... 118 下一页
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!