摘要: f[i][j][k][0]表示a做到前i位,b做到前j位,有了k个子串且第i位不用的方案数 f[i][j][k][1]表示a做到前i位,b做到前j位,有了k个子串且第i位用的方案数 a[i]==b[j]: f[i][j][k][0]=f[i-1][j][k][0]+f[i-1][j][k][1] f 阅读全文
posted @ 2019-11-13 21:57 DFTMR 阅读(137) 评论(0) 推荐(0)
摘要: 题意经简化后就是询问多少个序列存在长度为3的回文串 可以用总方案减去不存在长度为3回文串的方案,即ai!=ai+2 考虑奇偶分治,最后将方案相乘 若一段数形如p,0,0,...,0,q,可以发现不存在长度为3的回文串的方案只与p和q是否相等和0的个数有关 令f[i]表示0的个数为i且p!=q的方案数 阅读全文
posted @ 2019-11-11 21:05 DFTMR 阅读(137) 评论(0) 推荐(0)
摘要: 对于询问,我们可以分两种情况讨论: 1.第x株植物不变种且排名不变,当且仅当对于所有的ai<ax且kai>=ax的植物不变种,设这样的植物有p株 2.第x株植物变种且排名不变,当且仅当对于所有的ax<=ai<kax的植物变种,设这样的植物有q株 则x排名不变的概率为(1-pr)^(p+1)+pr^( 阅读全文
posted @ 2019-11-10 22:07 DFTMR 阅读(114) 评论(0) 推荐(0)
摘要: 性质:删掉任意一个点后,原来能被删的点仍能被删,原来不能被删的点仍不能被删 判断每个点能否被删,并从小到大输出 #include<cstdio> using namespace std; int head[300005],len,a[300005],n,x,y,flag[300005],ans; s 阅读全文
posted @ 2019-11-10 21:46 DFTMR 阅读(167) 评论(0) 推荐(0)
摘要: 令f[i][j]表示飞翔到(i,j)的最小点击次数 f[i][j]=min(f[i-1][j-k*x[i-1]+k,f[i-1][j+y[i-1]] 这样做复杂度O(n^2m) 考虑优化这个过程,先考虑上升的情况,则f[i][j]有两类决策转移: 1.f[i][j]=f[i-1][j-x[i-1]] 阅读全文
posted @ 2019-11-06 23:26 DFTMR 阅读(113) 评论(0) 推荐(0)
摘要: 询问最大值与最小值之差为k好像比较困难,所以可以把转换成求最大值与最小值之差小于等于k的问题,等于k的数量=小于等于k的数量-小于等于k-1的数量 这样可以在树上进行DFS,时间复杂度O(n^2) #include<cstdio> using namespace std; typedef long 阅读全文
posted @ 2019-11-05 23:49 DFTMR 阅读(108) 评论(0) 推荐(0)