2024.8 #7

1.[TJOI2015] 弦论

你说得对,但是小 S 觉得 SAM 非常的不优美,所以她打算使用 SA 做。

她决定先研究 t=0 的情况。

从头到尾扫,每一个后缀没出现过的子串数为是 nsai+1highti。然后就可以直接枚举每一个位置,然后就可以计算出第 k 个子串的结尾在哪里。

然后她需要考虑 t=1 的情况。

此时她有一个暴论。同样的从前往后扫,然后枚举每一个末尾。但是这是 O(n2) 的,她很生气。

但是她发现了一个性质,那就是当前面的字母固定时,后面一个字母是单调不降的,满足单调性。所以她想到了用二分做。

她对于后缀数组做前缀和,这样就知道了一个字符为开头的子串有多少个了。那么就可以做了,复杂度为 O(nlogn),她很高兴。

2.BZOJ3864 Hero meet devil

小 S 最近刚学 dp 套 dp,于是她找来了这道道来练手。

小 S 先考虑怎么做内层 dp,也就是求 LIS。先定义 gi,jSi 个字符和 T 的前 j 个字符的 LIS 的长度。那么就有转移式:

gi,j={gi1,j1                   si=tjmaxgi1,j,gi,j1    other

这是平凡的。

然后小 S 考虑设计外层 dp。由于之和上一行的状态有关,也就是只需要记录 g,j 的所有情况,但是很明显直接纪录会有 |S||S| 种可能,很明显不能过。

但是小 S 发现,需要维护的数组每一次的变化要么是 +1 要么是不变。发现了这一个性质之后,小 S 考虑做一次差分,直接用状压记录状态即可,此时需要记录的状态为 O(2|S|) 了。那么这个题就可以做了。小 S 很高兴。

3.[SDOI/SXOI2022] 小 N 的独立集

小 S 已经知道 dp 套 dp 的流程了,于是她决定来做这道有点挑战的题目。

同样考虑内层 dp。按照最大权独立集的套路,我们定义 gu,0/1 表示选/不选 u。(具体见没有上司的舞会。)

然后考虑外层 dp。小 S 定义 dpu,g0,g1 为选节点 u 的最大权值为 g0,不选节点 u 的最大权值 g1

此时小 S 考虑怎么转移。这个转移和最大权独立集的转移比较像,为:

dpu,gu,0,gu,1×dpv,gv,0,gv,1dpu,maxgv,0,gv,1+gu,0,gv,0+gu,1

但是小 S 发现这个时候的状态数量非常大,为 O(n3k2),时间也爆炸,所以小 S 需要改变 dp 的状态定义。但是小 S 发现外层 dp 的定义无法改动,此时她考虑改变内层 dp 的定义。

树上最大权独立集还有另一种的 dp 方法,那就是定义 gu,0/1 表示是否强制不选 u 的最大值。此时有一个性质:gu,1[gu,0,gu,0+k]。那么我们定义 dpu,g1,d 表示 gu,1=g1,gu,0=g1+d 的情况数。那么转移式变为:

dpu,d1,gu,1×dpv,d2,gv,1dpu,gu,1+gv,1+d2,max(0,d1d2)

此时的复杂度为 O(n2k4),可以通过。

4.[ZJOI2019] 麻将

小 S 认为自己已经掌握了 dp 套 dp 了,所以她决定来做 ZJOI 的神仙题目。

同样的,考虑内层 dp。小 S 先考虑普通情况,也就是 4 个面子加上 1 个对子,而对于 7 个对子的情况,特判一下就行了。

小 S 定义 dpi,j,k 为,现在还有没有对子,并且有 j 组形为 a1,a 的牌,以及 k 组形如 a 的牌,此时所能产生的面子的最大值。

然后小 S 把 j,k,0/1 的两个 3×3 的矩阵看成一个状态,把得到一张新的牌然后转移到另一个状态看成边,那么就可以建出 dp 自动机。虽然状态看似非常多,但实际上只有 2092 个,可以放心建。

然后再来考虑设计外层 dp。

回归到原本问题,其实就等于求 i=14n13f(i)×i!×(4n13i)!(4n13)!。其中 f(i) 的定义为摸了 i 次牌还没胡的种类数。

为了求解 f(i),小 S 定义 gi,j,k 为目前考虑完了前 i 种牌,目前共有 j 种牌,在自动机上的节点为 k。那么 g 的递推式就显而易见了:

gi,j,k×(4sitsi)gi+1,j+t,nxtk,t

那么 f(i)=j=12092g13,i+13,j,然后求出答案了。时间复杂度 O(n2×2092),可以通过小 S 很开心。

posted @   sqrtqwq  阅读(4)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话
点击右上角即可分享
微信分享提示