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

摘要:题目链接 "cf1242C" 题解 题意:有K个组,每组有若干个数【所有数互异】,现在从每个组取出一个数,然后再将这些数分别放入一个组中,是否存在方案使得操作结束后每个组数字的和相等 最后相等的和是固定的,我们可以求出每个组距离结果的差值,对于这个组每个数,如果要将其取出,那么放入的一定就是这个数再 阅读全文
posted @ 2020-02-06 15:38 Mychael 阅读(220) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ3836" 题解 显然这是个NP完全问题,此题的解决全仗 任意两点间不存在节点数超过10的简单路径 的性质 这意味着什么呢? dfs树深度不超过10 10很小呐,可以状压了呢 我们发现一个点不但收祖先影响,而且受儿子影响,比较难处理 我们就先处理该点及其祖先,然后 阅读全文
posted @ 2018-06-29 12:08 Mychael 阅读(337) 评论(0) 推荐(0) 编辑
摘要:题目链接 "loj2542" 题解 设f[i][S]表示从i节点出发,走完S集合中的点的期望步数 记de[i]i的度数,E为边集,我们很容易写出状态转移方程 ①若iS $$f[i][S] = \frac{1}{de[i]}\sum\limits_{(i, 阅读全文
posted @ 2018-06-26 15:20 Mychael 阅读(1154) 评论(1) 推荐(3) 编辑
摘要:题目链接 "loj2540" 题解 有一个朴素三进制状压dp,考虑当前点三种状态:没考虑过,被选入集合,被排除 就有了O(n3n)的转移 但这样不优,我们考虑优化状态 设f[i][S]表示独立集大小为i,不可选集合为S【要么是已经在独立集中,要么已经被排除了】 那么剩余点都 阅读全文
posted @ 2018-06-26 10:28 Mychael 阅读(172) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ1495" 题解 观察表格,实际上就是分A多和B两种情况,分别对应每个点选A权值或者B权值,所以成对的权值可以分到每个点上 所以每个非叶节点实际对应一个状态,表示子树AB数量关系 设f[i][j][s]表示节点i子树中选了jA,其祖先的状态为 阅读全文
posted @ 2018-06-26 09:04 Mychael 阅读(77) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ4416" 题解 建立序列自动机,即预处理数组nxt[i][j]表示i位置之后下一个j出现的位置 设f[i]表示合法字符集合为i的最短前缀,枚举最后一个加入的字符进行转移 注意到合法串长度是O(n2)级别的,所以n21直接判掉 C++ includ 阅读全文
posted @ 2018-06-24 10:19 Mychael 阅读(159) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ2595" 题解 著名的斯坦纳树问题 设f[i][j][s]表示点(i,j)与景点联通状况为s的最小志愿者数 设val[i][j](i,j)需要的志愿者数 有两种转移 一种是自己转移 $$f[i][j][s] = min\{f[i][j][e] + f[i] 阅读全文
posted @ 2018-06-17 10:36 Mychael 阅读(142) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ3724" 题解 构造矩阵的思路真的没想到 选x就不能选2x3x,会发现实际可以转化为矩阵相邻两项 $$\begin{matrix}1 & 3 & 9 & 27 & ... \\2 & 6 & 18 & 54 & ... \\4 & 12 & 36 & 108 & 阅读全文
posted @ 2018-06-10 15:31 Mychael 阅读(189) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ4197" 题解 两个人选的数都互质,意味着两个人选择了没有交集的质因子集合 容易想到将两个人所选的质因子集合作为状态dp n以内质数很多,但容易发现n22.3,这里边的质数只有8个,而大于n的质因子只会出现一次, 阅读全文
posted @ 2018-06-08 18:32 Mychael 阅读(167) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ1559" 题解 考虑到这是一个包含子串的问题,而且子串非常少,我们考虑AC自动机上的状压dpf[i][j][s]表示长度为i的串,匹配到了AC自动机j号节点,且已匹配集合为s的方案数 直接在AC自动机上转移即可 但是为了防止使用last阅读全文
posted @ 2018-05-22 22:03 Mychael 阅读(225) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ5299" 题解 就一个毒瘤卡常题。。写了那么久 设f[i][s]表示选了集合s中的点,最后一个是i,进行转移 要先预处理出两点间的点,然后卡卡常就可以过了 C++ include include include include include include inc 阅读全文
posted @ 2018-05-15 15:36 Mychael 阅读(117) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ4000" 题解 注意题目中的编号均从0开始= = m特别小,考虑状压 设f[i][s]为第i行为s的方案数 每个棋子能攻击的只有本行,上一行,下一行, 我们能迅速找出哪些状态是合法的,以及每个状态所对应的上一行攻击位置的并和下一行攻击位置的并 如果两个状态上 阅读全文
posted @ 2018-05-08 13:29 Mychael 阅读(253) 评论(0) 推荐(0) 编辑
摘要:题目 给定n个字符串(S1,S2,„,Sn),要求找到一个最短的字符串T,使得这n个字符串(S1,S2,„,Sn)都是T的子串。 输入格式 第一行是一个正整数n(n include include include include define ULL unsigned long long int d 阅读全文
posted @ 2018-04-11 13:51 Mychael 阅读(154) 评论(0) 推荐(0) 编辑
摘要:1076: [SCOI2008]奖励关 Description 你正在玩你最喜欢的电子游戏,并且刚刚进入一个奖励关。在这个奖励关里,系统将依次随机抛出k次宝物, 每次你都可以选择吃或者不吃(必须在抛出下一个宝物之前做出选择,且现在决定不吃的宝物以后也不能再吃)。 宝物一共有n种,系统每次抛出这n种宝 阅读全文
posted @ 2017-12-12 17:37 Mychael 阅读(163) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示