省选模拟三十一 题解

T1

$dp[i]=max(dp[j]-C_{j+1}^{2}+ij+a[i]-C_i^2)$

简单的一个线段树维护凸包

T2

设$dp[S][i]$代表$[1,k]$选的次数为$S$,上一次选i的之后的方案数

要求第$k$小的字典串,逐位选择后用$dp$数组来判断是否小于等于$k$

期望得分$80$分

$k<=26,n<=2e18$

发现其实k>8则每次一定是加一定形如$ABABABABA$的前缀使得$k-=2$

T3

不妨让$n=n-k+m,k=m$

现在就和$m$无关了

设$f(n,k)$代表$n,k$时的答案

假设$B[i][m]!=B[i+1][m]$

设$B[i][m]=x$

则$B[i][m+1...k]$一定是$n$的后缀,$B[i+1][m+1...k]$一定是$x+2,x+3...x+k$

($k=1$时不满足)

差值为$n-x-k$,那么总贡献即为

$$\sum\limits_{i=1}^{n-k}n-k-i$$

$$=C_{n-k}^{2}$$

$$=g(n,k)$$

如果$B[i][m]=B[i+1][m]$,贡献是$f(n-x,k-1)$

综上所述:$f(n,k)=g(n,k)+\sum\limits_{i=1}{n-k+1}f(n-i,k-1)$

现在问题转化为对于每个$g(n,k)$求出它的贡献系数来

从实际含义入手考虑这个式子,相当于把$n$拆成$k$个正整数

那么$g(x,y)$的系数就是$n-x$拆成$k-y$个正整数的方案数

考虑枚举$y$求出所有$x$的答案之和$(y<=x<=n)$

其实就是把$n-y$拆成$x-y$和$n-x$,并且在前面选三个,在后面选$k-y$个

总的即是$C_{n-y}^{k-y+3}$

posted @ 2020-02-25 21:48  ATHOSD  阅读(106)  评论(0编辑  收藏  举报