这题本来是筹备某个神秘比赛时想出来的 idea,当时想申请 rated,对着知识点瞪发现没有字符串(因为我非常不会),然后当时那个位置的题目背景指向是道构造,因此就想了这么个题。后来因为最难的题核心 idea 撞车了整个比赛拆掉了。那场比赛筹备时的另一个 idea 被出成了 P11887,我也很喜欢那个 idea,欢迎去做一做(广告)。很可惜当时急着想出出来因此没能出成月赛让更多人见到/ng
正好构造也很符合这个位置的背景,于是就丢这了。本来其实歌名选的是 3-8 字,后来感觉白色风车放 B 太难了,这题放 D 又太超纲且也可能偏难,因此忍痛舍弃了 8 字,这下组题舒服了。
接下来要做的就是在建出来的图上求 c 种颜色的染色方案数。显然这在一般图上是 NP-hard 的,但是我们知道有一个东西叫做弦图。
先只看 T 建出的图。考虑一个长大于 3 的环,这个环上一定有一个编号最大的点,由于 T 连出所有边都形如 (i+z[i],i),因此这个最大的点 k 处一定满足 \exists i<j,k=i+z[i]=j+z[j],根据 z 函数的定义,有 T_{[i,k-1]}=T_{[0,z[i]-1]},故 T_{[0,z[j]-1]}=T_{[j,k-1]}=T_{[j-i,z[i]-1]}。因此在上述过程中我们一定会比较 T_{z[i]} 与 T_{z[j]},从而它们或者在同一等价类中,或者有连边。
再看加入 S 后的部分。由于所有边都连在 S_{i+p[i]} 与 T_{p[i]} 之间,故环上 S 中的点 k 处一定满足 \exists i<j,k=i+p[i]=j+p[j],同样有 S_{[i,k-1]}=T_{[0,p[i]-1]},故 T_{[0,p[j]-1]}=S_{[j,k-1]}=T_{[j-i,p[i]-1]}。故我们一定比较过 T_{p[i]} 与 T_{p[j]}。
我们于是证明了建出的图为弦图,其点数与边数均为 O(n+m),朴素地求完美消除序列染色,由于在本题条件下构造出的图为稀疏图,而且极大团大约只有 \log 级别大小,具体地,构造出大小为 k 的团需要长为 2^{k-1} 的字符串。因此大概可以做到 O((n+m)\text{polylog}),具体没算,但大概也能过。