把博客园图标替换成自己的图标
把博客园图标替换成自己的图标end

UOJ #772. 【UER #11】企鹅游戏

非常有趣的一个题,各种做法都非常有趣!

首先显然建立 ACAM 之后对于每个询问串去 ACAM 中匹配,然后每个企鹅的权值是 \(3^i\) 的子树内点数次方。

一个结论是:所有初始串出现的询问总和是 \(O(L^{\frac{4}{3}})\) 的。

对于 \(\geq L^{\frac{1}{3}}\) 的初始串,只有 \(O(L^{\frac{2}{3}})\) 个,且每个最多在 \(O(L^{\frac{2}{3}})\) 个询问串中出现。对于 \(\leq L^{\frac{1}{3}}\) 的初始串,每个长度的串出现次数总和 \(\leq L\),因此总共出现次数是 \(O(L^{\frac{4}{3}})\) 的。

然后在虚树上暴力跳就行了,使用光速幂就可以做到 \(O(L^{\frac{4}{3}})\)

另一个做法是依赖于模数的, \(3^i\bmod 2^{32}\) 显然是奇数,设为 \(2k+1\)。展开 \((2k+1)^x=\sum \limits_{i=0}^{x}{{x\choose i}(2k)^i}\)。因为模数是 \(2^{32}\),因此若 \(i\geq 32\),则值为 \(0\),因此只需要预处理 fail 树上 \((2k)^i,i\in [0,31]\) 的前缀和即可,这样可以做到 \(O(32L)\)

submission

posted @ 2024-06-30 15:51  275307894a  阅读(19)  评论(0编辑  收藏  举报
浏览器标题切换
浏览器标题切换end