P9501 RiOI-2 likely

好好好好好题

T 组数据,给定 n,m,k,求所有 2n 个大小为 n 的由 ±1 组成的有标号环 a0n1 中,有多少个满足 i=0n1j=0m1a(i+j) mod n=k。对 998244353 取模。

1T10,2n,n5×106,|k|n,2mn

显然的这就是对 bi=j=0m1a(i+j) mod n1 的个数进行了限制,以下重新令 k 表示这个个数。于是我们关心对于一个特定的 b 序列,如何判断是否存在 a 序列与其对应,以及对应的 a 序列有多少个。

对于任何一个 b,考虑它对应的 ci=bibi+1=aia(i+m) mod n,显然地,下标划分成了 g=gcd(n,m) 个不同的小环。这些小环上,c 的数值乘积为 0,也就是说相邻两个 b 小环的乘积相等,也就是所有 b 小环的乘积都相等,这也就是说,所有小环上要么都有奇数个 1,要么都有偶数个。所有合法的 b 数组必须满足这条性质。

当确定了一个满足上述条件的 b 数组后,通过它对应的 c 数组,我们确定了每个环上的 a 的相互关系,也就是说,只要确定其中的任何一个元素,就能确定整个环。此时对应的 a 数组恰好有 2g 个(它们并不都合法)。b 可以由 cb0 唯一确定,也就是说,当前找到的满足 c 限制的 a 数组,如果同时满足 b0 的限制,就能唯一对应上我们正在考虑的 b 数组。

对于每个环,只有将其整体反转的操作可以进行。当 mg 为偶数时,对任何一个环做反转都是没有用的。只有一部分(2ng 个满足某种性质的)b 是合法的,并且这些 b 恰好对应了 2g 个合法的 a(每个环上 a 都可以任意反转)。而当 mg 为奇数时,每个满足先前限制的 b2ng+1 个)都恰好对应了 2g1 个合法的 a。分别考虑两种情况的答案。

首先考虑 mg 为奇数。令 t=ng,则答案为:

2g1[zk]((i=0t[i0(mod2)](ti)zi)g+(i=0t[i1(mod2)](ti)zi)g)

接下来考虑 mg 为偶数的情况。注意到每个环上 a 中所有元素会被算恰好 mg 次,所以我们相当于额外限制所有小环上有偶数个 1。所以答案即为:

2g[zk](i=0t[i0(mod2)](ti)zi)g

怎么求这个东西呢?注意到设 i=0t(1)i(ti)zi=(1z)t,i=0t(ti)zi=(1+z)t。所以

F=(i=0t[i0(mod2)](ti)zi)g=12g((1+z)t+(1z)t)gG=(i=0t[i1(mod2)](ti)zi)g=12g((1+z)t(1z)t)g

显然求这两个多项式的点值需要用到长度为 Θ(tg=n) 级别的 NTT,这个显然不可能过。但是由后面的封闭形式,很容易用快速幂求出单位根处的点值,大大加速求解过程。时间复杂度为 Θ(nlogV),常数很小。

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