随笔分类 -  动态规划—状压

摘要:2734: [HNOI2012]集合选数 链接 分析: 转化一下题意。 1 3 9 27... 2 6 18 54... 4 12 36 108... 8 24 72 216... ... 写成这样的矩阵阵后,那么题意就是不能选相邻的点,求方案数。可以知道行不超过18,列不超过11,然后状压dp即可 阅读全文
posted @ 2019-03-03 19:57 MJT12044 阅读(173) 评论(0) 推荐(0)
摘要:Rikka with String http://acm.hdu.edu.cn/showproblem.php?pid=6086 题意: 求一个长度为2L的,包含所给定的n的串,并且满足非对称。 分析: AC自动机+状压dp。 首先给这个n个串,建立AC自动机。然后去枚举长度为L的一个串,就可以知道 阅读全文
posted @ 2018-12-09 14:05 MJT12044 阅读(173) 评论(0) 推荐(0)
摘要:Wireless Password http://acm.hdu.edu.cn/showproblem.php?pid=2825 题意: 求有多少长度为n的串,包含给定的串的至少k个串。 分析: AC自动机+dp,首先对给定的m个串建立AC自动机,然后状压dp,dp[i][j][s]表示当前的串的长 阅读全文
posted @ 2018-12-09 10:01 MJT12044 阅读(157) 评论(0) 推荐(0)
摘要:#333. 【NOIP2017】宝藏 http://uoj.ac/problem/333 1、错误的$n^42^n$做法: dp[s]表示当前的点集为s,然后从这些点中选一个做起点i,然后枚举边,然后更新dp[t|(1<<j)]。dis[s][i]表示点集为s的情况下的i号点的深度。详见代码。 为什 阅读全文
posted @ 2018-11-07 20:36 MJT12044 阅读(182) 评论(0) 推荐(0)
摘要:1139: [POI2009]Wie https://www.lydsy.com/JudgeOnline/problem.php?id=1139 分析: Dijkstra。状压最短路,dis[i][j]表示到第i个点,状态为j的最短路。 或者 分层最短路可以做。 代码: 阅读全文
posted @ 2018-07-23 22:45 MJT12044 阅读(224) 评论(0) 推荐(0)
摘要:4525: [Cerc2012]Kingdoms 题意 n个国家,两两之间可能存在欠债或者被欠债的关系,一个国家破产:其支出大于收入。问一个国家能否坚持到最后。 思路 很有意思的一道题。 dp[s]表示在当前国家存在情况为s,1-存活,0-破产。那么起始为11111...。然后枚举一个国家,判断是否 阅读全文
posted @ 2018-05-01 18:58 MJT12044 阅读(262) 评论(0) 推荐(0)
摘要:3195: [Jxoi2012]奇怪的道路 链接 思路: 因为一个点只会和它前后k个点连边,所以,记录下每个点的前k个点和它自己(共k+1个点)的状态,1表示奇数,0表示偶数。 dp[i][j][s][p]表示当前考虑到第i个点,一共连了m条边,状态为s,在前k个点中,当前考虑第p个点是否与i连边。 阅读全文
posted @ 2018-05-01 18:11 MJT12044 阅读(215) 评论(0) 推荐(0)
摘要:链接 题意: 有n个人,每个人可能会说: 第x个人是好人/坏人 如果第x个人是好人/坏人,则第y个人是好人/坏人 思路: 状压dp,首先每个人所说的人只能是他前面10个人,所以对于第i个人记录下,他前面十个人的情况。 对于第i个人,如果他说的话一个状态不冲突,那么i可以由这个状态转移。 注意:对于“ 阅读全文
posted @ 2018-04-28 21:27 MJT12044 阅读(235) 评论(0) 推荐(0)
摘要:链接 思路 状压dp,dp[i][s]表示当前是第i次选择,吃过的宝物的状态是s,的期望得分。 如果一个宝物可以吃,那么可以选择吃或不吃,取最大的。 zz的我:50010的空间开成了500100,然后提示tle,醉了。。 代码 阅读全文
posted @ 2018-04-28 18:05 MJT12044 阅读(164) 评论(0) 推荐(0)
摘要:链接 题意 给n张卡片,每张卡片都有出现的概率,求收集到全部的卡片的期望次数。 思路 状压dp。dp[i] 表示收集了i张,的期望次数。dp[n]=0;可能自己转移到自己,解一下方程。 记zz的bug:1、1<<20在计算器中算完了之后是1048576,然后就少看了一位,开了110000,然后就一直 阅读全文
posted @ 2018-04-28 15:05 MJT12044 阅读(149) 评论(0) 推荐(0)
摘要:链接 题意: n+1个点,求从0开始,走完所有的点,再回到0号点的最小距离。 思路 状压dp。首先Floyd预处理出任意两个点之间的距离。dp[s][i]表示走过的点的状态是s,其中到达i点的最小距离(i点属于走过的点,即s状态下的点)。当然s是二进制数1表示走过,0表示为走过。 那么dp[s][i 阅读全文
posted @ 2018-04-28 10:51 MJT12044 阅读(119) 评论(0) 推荐(0)
摘要:链接 思路 状压dp,dp[i][j]:表示到第i行,状态为j的方案数。预处理出每一行所有的可能的选法。 转移方程:dp[i][j] += d[i-1][k],j与k不冲突。 代码 http://poj.org/problem?id=3254 阅读全文
posted @ 2018-04-27 22:00 MJT12044 阅读(138) 评论(0) 推荐(0)