T1. 排水系统

拓扑排序 + 高精。


T2. 字符串匹配

题意:给你一个长度为字符串 SS,求对 SS 的划分个数,使得 S=(AB)iCS=(AB)^iC,其中 (s)i(s)^i 表示将 ss 复制 ii 遍拼接,A,B,CA,B,C 均为非空字符串。

多组数据。T5T\le5S220|S|\le2^{20}

枚举倍数调和级数是 O(nlnn+26n)O(n\ln n+26n) 或者 O(nlnnlog26)O(n\ln n\log 26) 的。

扩展 KMP 可以做到 O(n)O(n)


T3. 移球游戏

题意:有 n+1n+1 根柱子,前 nn 根柱子上每根有 mm 个球。所有 n×mn\times m 个球共 nn 种颜色,每种颜色 mm 个。

你可以对当前局面进行以下操作若干次:

  • 将某柱子顶端的球移到另一个柱子的顶端。

最后使得将相同颜色的球最后全部放置在相同柱子上。操作过程中需要满足:

  • 原来的柱子上至少有 11 个球。且

  • 新的柱子上至多有 m1m-1 个球。

请你给出一种操作次数 820000\le820000 的方案。保证方案存在。

2n502\le n\le502m4002\le m\le400

我们定义『切分』操作为:对于两根柱子 X,YX,Y,我们可以用一根满柱 HH 和一根空柱 EE,将它们的较小的一半元素放在 XX,较大的一半元素放在 YY。这一步操作次数 5m\le5m

考虑归并排序,按照 maxX\max{X} 的大小归并,这样会有 L\le L 次切分和 2L\le2L 次整体移动,总操作次数 7nlog2nm=8400007n\left\lceil\log_2n\right\rceil m=840000,优化一下切分操作就能过了。

注意特判 n=2n=2,因为此时切分操作选不出来 HH

代码还在咕咕咕。


T4. 微信步数

题意kk 维空间内的每一个点可以用 (a1,a2,,ak)(a_1,a_2,\cdots,a_k) 表示,规定地图中第 ii 维的 坐标是整数,且满足 1aiwi1\le a_i\le w_i

P=i=1kwiP=\prod_{i=1}^kw_i 天的时间中,小 C 每天会选择一个不同的坐标出发,并循环地走 nn 步直到出界。第 ii 步用两个整数 ci,dic_i,d_i 表示,代表小 C 会将当前坐标的第 cic_i 维加上 did_idi{1,1}d_i\in\{1,-1\})。

PP 天移动的总步数,答案对 109+710^9+7 取模。若出现某天小 C 无法结束移动,输出 -1

两类数据范围:

  • n5×105n\le5\times10^5k10k\le10w106w\le10^6

  • n5×105n\le5\times10^5k3k\le3w109w\le10^9

设走了 ii 步后第 jj 维经过坐标的最大值为 r(i,j)r(i,j),最小值为 l(i,j)l(i,j),那么答案为

i=1nj=1k[wj(r(i,j)l(i,j))]\sum_{i=1}^n\prod_{j=1}^k[w_j-(r(i,j)-l(i,j))]

nn 步为一个周期,那么第 xx 个周期的答案为

f(x)=i=1nj=1k[wj(r(n,j)l(n,j))c(i,j)(x2)c(n,j)]f(x)=\sum_{i=1}^n\prod_{j=1}^k[w_j-(r(n,j)-l(n,j))-c(i,j)-(x-2)c(n,j)]

其中 c(i,j)c(i,j) 表示第 ii 个周期走了 ii 步后第 jj 维坐标的变化量。

f(x)f(x) 是一个 k+1k+1 次多项式,用拉格朗日插值即可求出。暴力枚举 xx 可以过官方数据。()