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