传到 FTP 上了。
Updated by Qingyu: 没有 FTP 权限的可以在这里下载:https://oj.qingyu.us/files/HarbinEditorialV2.pdf
传到 FTP 上了。
Updated by Qingyu: 没有 FTP 权限的可以在这里下载:https://oj.qingyu.us/files/HarbinEditorialV2.pdf
由于f是完全积性函数,因此f(1)=1,并且只需要确定所有质数的函数值。
对于质数x,若x mod 3 = 1,取f(x)=1,否则取f(x)=-1。
设s表示f的前缀和,那么s(x)=-s(x/3)+(0或1)
因此|s(x)|<= $\left\lceil \log_3x/2\right\rceil$
如果最长次连续子串为[l,r],我们找到它的子序列的开头和结尾l1,r1,那么一定存在l1 < l或r1 > r。
如果 l1 < l,那么可以将r延伸至len。如果r1 > r,那么可以将l延伸至1。所以最长次连续子串一定是前缀或后缀。
最长次连续子串长度恰好为w不好求,我们改为求<=w的减去<=w-1的。
最长次连续子串长度<=w,则开头的len-w个字符互不相同且末尾的len-w个字符互不相同。
当len<=2w时,ans=P(k,len-w)^2 * k^(2w-len)。
当len>2w时,ans=P(k,len-2w) * P(k-(len-2w), w)^2。
在[w,w+k]中枚举len即可。
时间复杂度O(k)