随笔分类 - DP
摘要:传送门 sb题面误导了我半天。 按位考虑, 对于 $a[i]$和$i$的一位考虑什么样的$a[j]$和$j$可以转移过来,发现这一位有一种一定可以一种一定不行,还有两种不确定。 考虑魔改$01trie$每一个节点$4$个儿子,但是这样$01trie$会$T$。 发现不确定的两种情况$a[j]$和$j
阅读全文
摘要:###1001 Static Query on Tree 转化题意之后就是问一棵树有多少点满足是集合$A$中某个节点的祖先且是$B$中某个节点的祖先且是$C$中某个节点的后代。 $|A|+|B|+|C|<=10^5$ 满足条件的点一定构成一条链,并且链上最浅的节点是$C$中节点最深的节点是$A$中一
阅读全文
摘要:###CF 791(div2) E. Typical Party in Dorm 传送门 一个自然的思路是,考虑每一个区间产生了多少贡献。发现这个贡献跟可用的字符集合以及集合大小有关系,故设置一个$ans[bit][len]$来记录贡献。最后答案是给出字符串子集对应的$ans[bit‘][len]$
阅读全文
摘要:题目看完之后就知道不会做。 然后题目的提示十分重要: 对于 n 个 [0,1] 之间的随机变量 x1,x2,...,xn,第k小的那个的期望值是 k/(n+1)。 假设我们知道 $m$ 条边的权值,我们做一遍 克鲁斯卡尔 最小生成树。答案就是最小生成树中的边权最大值。也就是加入后 恰好 使图联通的边
阅读全文
摘要:喜闻乐见的 圆方树+虚树 图上不好做,先建出圆方树。 然后答案就是没被选到的且至少有两条边可以走到被选中的点的圆点的数量。 语文不好,但结论画画图即可得出。 然后套路建出虚树。 发现在虚树上DP可以得出答案。 所以在虚树上DP即可。 ~~代码极丑~~ cpp include include incl
阅读全文
摘要:显然是$DP$。 设$dp[i][0/1/2]$代表以i为根且$i上有士兵放置/i被控制但i上没有士兵/i没有被控制$的最小代价。 $g[i][0/1/2]$代表对应的方案数。 然后运用乘法原理和加法原理转移即可。 转移是我写过的树形$DP$里比较$X$(不可描述)的。 所以还是看代码吧。。(虽然可
阅读全文
摘要:因为当$A include include include include using namespace std; const int mod=1e9+7; int n,m,mx,dp[2100][2100][2],ans; int read(){ int sum=0,f=1;char ch=ge
阅读全文
摘要:一般的思路是$dp[i][j]$代表前i个商店购买集合为j的最小费用,枚举每一个商店然后枚举子集。复杂度$O(n3^m)$过不了。 先把$dp[i][j]$设为$dp[i 1][j]$表示钦定在这个商店购物,然后在$dp[i]$中做背包。 具体就是枚举每一个商品买不买。 然后惊奇的发现这样复杂度为$
阅读全文
摘要:明显是一道斯坦纳树的题。 然而这题只需要属性相同的点互相连接。 我们还是照常先套路求出$ans[s]$。 然后对$ans[s]$做子集DP即可。 具体看代码。 cpp include include include include include include using namespace st
阅读全文
摘要:我们先用树形DP,求出选取集合S中的点,满足连通性的但是标号可重的方案数,贡献给F(i)(1$\leq$i$\leq$$\mid S\mid$),也就是我们要处理出F(i)代表取至多i个点的方案数。 然后容斥一下就求出恰好选i个点的方案数。 卡一下常就能过了。
阅读全文
摘要:我们预处理出来以i为结尾的最长回文后缀(回文自动机的构建过程中就可以求出)然后就是一个区间覆盖,因为我懒得写贪心,就写了线段树优化的DP。 cpp include include include include include using namespace std; const int N=101
阅读全文
摘要:感觉很水。 因为SAM上一个点的子树大小代表这个点所表示子串的出现次数。 建出广义后缀自动机之后。在$parent$树上跑$DP$,维护$size[i][1]$,和$size[i][0]$代表i的子树中有多少第一个串的结束节点和第二个串的结束节点,然后答案就是$size[i][0] size[i][
阅读全文
摘要:我们对 作文库 建出广义后缀自动机。考虑用$SAM$处理出来一个数组$mx[i]$,表示从作文的第$i$个位置向左最远在作文库中出现的子串的长度。这个东西可以在$SAM$上跑$trans$边来实现(其实求出来的是作文前i位在作文库中出现的最长后缀)。 处理出来这个东西,我们考虑用$DP$求答案。发现
阅读全文
摘要:后缀自动机有一个性质。 就是如果倒建SAM两个串的lcp就是这两个串的结束节点的LCA。 然后就可以愉快的跑DP了。 对于每一个后缀树上的节点$u$,它对$len[u]$的贡献是$\sum_{v1}\sum_{v2\neq{v1}}size[v1] size[v2]$当然如果u就是一个后缀的结尾就要
阅读全文
摘要:题解 以前做过很多单调队列优化DP的题。 这个题有一点不同是对于有的状态可以转移,有的状态不能转移。 然后一堆边界和注意点。导致写起来就很难受。 然后状态也比较难定义。 dp[i][j]代表前i个人涂完前j个位置的最大收益。 然后转移考虑 第i个人可以不刷。dp[i][j]=dp[i-1][j];
阅读全文
摘要:题意自己看(猜) 题解 这题很经典,就是记录dp[i][0/1/2]分别代表,从i点向下最大和次大深度,和向上最大深度。 然后转移就行了。 我的写法可能太丑了。死活调不出来,写了一个漂亮的
阅读全文
摘要:题解 这题一眼望去DP。 发现自己太智障了。 这题想的是O(n^3m)的。 环形处理只会断环成链。。。。然后DP也想的不好。 我们先考虑如果除去环这题该怎么做? dp[i][j][0/1]代表到第i小时睡了j个小时,第i小时睡了/没睡权值最大值。 初值 dp[1][1][1]=dp[1][0][0]
阅读全文
摘要:题解 一个自然的思路是对于每一个物品做一次01背包 然后T飞了。 试着用二进制拆分,还是T了。 单调队列,对不起,懒,不想写。 我们这样想。设dp[i]代表i这个面值前几种硬币是否能凑到 然后对于每一个i,我们用used[i]代表要凑到i这个值至少要多少个当前这种硬币 然后used可以o(m)得到(
阅读全文
摘要:2560: 串珠子 Description 铭铭有n个十分漂亮的珠子和若干根颜色不同的绳子。现在铭铭想用绳子把所有的珠子连接成一个整体。 现在已知所有珠子互不相同,用整数1到n编号。对于第i个珠子和第j个珠子,可以选择不用绳子连接,或者在ci,j根不同颜色的绳子中选择一根将它们连接。如果把珠子看作点
阅读全文
摘要:题解 利用期望的线性性,可以把问题转化为求每一个卡牌造成期望的期望值。 然后我们就需要知道每一个卡牌发动技能的概率。 因为当某一张卡牌发动技能时这一轮会结束,这就很难直接计算了。 我们使用DP 设dp[i][j]为前i张卡牌在r轮中有j张发动技能的概率 i这张牌发动技能的概率就为sigema(j=1
阅读全文

浙公网安备 33010602011771号