P3589 KUR 题解

题目链接

Solution

因为 \(n\) 在 1e9 量级,所以答案是不可能一个个数的,考虑把答案的计数转化为若干条限制的求解.

我们考虑小串 \(a\)\(c\) 中的出现的起始位置 \(x\),他一定满足 \(m\) 条限制,把他们列出来:

对于 \(c_{x+i}\)\(a(x+i)+b=ax+(ai+b)\),令 \(t=ai+b\),这是一个只与 \(i\) 相关的东西。于是在模 \(n\) 意义下,

\(a_i=0\)\(0 \le ax+t \le p-1\),即 \(-t \le ax \le p-t-1\),令 \(l=-t,r=p-t-1\)

\(a_i=1\)\(p \le ax+t \le n - 1\),即 \(p-t \le ax \le n -t-1\),令 \(l=p-t,r=-t-1\).

\(l \le r\)\(ax\in [l..r]\),否则 \(ax\in [0..r]\cup[l..n-1]\).

这样 \(ax\) 就有了 \(m\) 条限制,令他们的交为 \(S\),则 \(S\)\(ax\) 的解集,又因为 \(a\)\(n\) 互质,故 \(|S|\) 即为答案. 问题转化为了区间求交.

前一种可以直接求,后一种可以转化为补集的并的补集,于是做完了。

注意 \([n-m+1,n]\)\(x\) 实际是不能取到的,需要在最后减去在其中的合法的 \(x\) 的数量.

posted @ 2024-08-06 09:43  Laijinyi  阅读(2)  评论(0编辑  收藏  举报