随笔分类 - DP
摘要:显然: 1、最坏情况下最初的叛徒一定是叶子。 2、若x不是叛徒,那么x的父亲也不是叛徒。 令f[i]表示i不是叛徒的最小x,s[i]表示i的子树大小,那么答案就是所有s[i]>k的f[i]的最大值。 接下来考虑怎么求f[i]。 当i是叶子节点时,因为每个叶子节点都有可能是叛徒,所以f[i]应是1,表
阅读全文
摘要:令f[i][j]表示前i个字符,匹配到不吉利数字的第j位的方案数。 枚举第i+1位,通过KMP求出前i+1个字符可以匹配到不吉利数字的第几位,递推。 但由于n<=109,要用矩阵乘法加速。 f[i][j]=a[j][0]*f[i-1][0]+a[j][1]*f[i-1][1]+...+a[j][m-
阅读全文
摘要:简单的斜率优化。 首先得到DP方程: f[i]=max(f[j]+a*(sum[i]-sum[j])2+b*(sum[i]-sum[j])+c),j<i 其中sum表示前缀和 设j比k优 f[j]+a*(sum[i]-sum[j])2+b*(sum[i]-sum[j])+c>f[k]+a*(sum[
阅读全文
摘要:假设我们可以求出当a[1]..a[i]是局部最小值而其它点不加限制时的方案数,那么显然可以通过容斥求出答案。 那么怎么求当一些点是局部最小值时的方案数呢? 考虑DP。将数字从小到大放。令f[i][j]表示已经放了i个数,局部最小值的点的状态为j时的方案数,可得到方程: f[i][j]=Σf[i-1]
阅读全文
摘要:显然在某一天要么花完所有钱,要么不花钱。 所以首先想到O(n^2)DP: f[i]=max{f[i-1],(f[j]*r[j]*a[i]+f[j]*b[i])/(a[j]*r[j]+b[j])},j<i 其中f[j]*r[j]/(a[j]*r[j]+b[j])是第j天最多能买多少A券,B类似。 假如
阅读全文
摘要:题目大意: 硬币购物一共有4种硬币。面值分别为c1,c2,c3,c4。某人去商店买东西,去了tot次。每次带di枚ci硬币,买si的价值的东西。请问每次有多少种付款方法。其中di,s<=100000,tot<=1000 思路:先用完全背包求出如果每种硬币可以用无数次的方案数,再容斥一下就好了。 具体
阅读全文
摘要:题目大意:有n个木块排成一行,从左到右依次编号为1~n。你有k种颜色的油漆,其中第i种颜色的油漆足够涂ci个木块。所有油漆刚好足够涂满所有木块,即c1+c2+...+ck=n。相邻两个木块涂相同色显得很难看,所以你希望统计任意两个相邻木块颜色不同的着色方案。 题解:看到数据范围第一个想到的就是dp。
阅读全文
摘要:题目大意:有N头奶牛,每头那牛都有一个标号Pi,1 <= Pi <= M <= N <= 40000。现在Farmer John要把这些奶牛分成若干段,定义每段的不河蟹度为:若这段里有k个不同的数,那不河蟹度为k*k。那总的不河蟹度就是所有段的不河蟹度的总和。 思路:显然如果连续的一段数字相同,我们
阅读全文
摘要:设x[i]为第i天走的路程,s为路程总和,则: ans=[(s/m-x[1])^2+(s/m-x[2])^2+(s/m-x[3])^2+...+(s/m-x[m])^2]*m =[(s-x[1]*m)^2+(s-x[2]*m)^2+(s-x[3]*m)^2]+...+(s-x[m]*m)^2)]/m
阅读全文

浙公网安备 33010602011771号