2023.8.10 闲话
看了一眼 STAOI R3 评价,主要都是针对 T2 的,后两道没多少评价,额 . T3 评价有点分化,可能和个人爱好有关 .
T2 数据较弱,我先谢罪 /wq
不过赛时过 T4 的没有写正解的,恼 . 赛后改成 2.5s 了,都得死 /fn(upd. 没杀掉,算了
其实好像时限是 1.5 倍 std 时间就行,没注意到 . 当时写的 std 跑的也不是那么快,就开的 4s,然后就被各种艹过。。
对于一个序列 \(\{a\}\),定义其大豆化 (Soybeanization) 序列 \(\{b\}\) 由如下操作得到:
- 初始 \(\{b\}\) 和 \(\{a\}\) 相等。
- \(n\) 从小到大遍历整个正整数集,对于每个 \(n\),进行操作:
- \(i\) 从小到大遍历整个不小于 2 的正整数集,对于每个 \(i\),操作 \(b_n\gets b_n-b_{\lfloor\frac ni\rfloor}\)。
- 如果 \(i>n\),结束过程。
进而,定义一个序列的 \(k\)-大豆化序列为进行 \(k\) 次大豆化操作后得到的序列。
现在给你一个整数序列 \(\{t_n\}\),将 \(\{t\}\) 复制无穷遍得到序列 \(\{a\}\),求 \(\{a\}\) 的 \(k\)-大豆化序列的第 \(m\) 项。
序列下标从 1 开始。答案可能很大,对 \(23068673\) 取模。
\(1\le n\le 10^4\),\(1\le m\le 10^{10}\),\(k\in\{1,2,3\}\)。
其实就是 SoyTony 筛啦,不过这个的预处理部分没有好组合意义,Rolling_star 给出了代数推导,感谢 .
首先考虑 \(\{a\}\) 经过一次大豆化之后得到的序列 \(\{b\}\) 满足递推:
那么暴力递归记忆化即可做到 \(O(k\cdot m^{3/4})\) .
原递推式可以改写为:
那么就有 \(\displaystyle \sum_{d=1}^mb_{\lfloor\frac md\rfloor}=a_m\),施整除 Möbius 反演,即得:
(我本来以为这个整除 Möbius 反演没有啥应用的,没想到还能和 SoyTony 筛联系上)
进而考察 \(\{b\}\) 的差分:
其中 \(a_0=0\) .
那么 Dirichlet 前缀和即可求出 \(b\) 的差分,前缀和后即为 \(b\),从而可以做到小范围预处理,若 \(\le B\) 的部分预处理,结合杜教筛的时间复杂度分析,复杂度就是 \(O\left(B\log\log B+\dfrac{m}{\sqrt B}\right)\),取 \(B=m^{2/3}\) 那么就是 \(O(km^{2/3}\log\log m)\),可以通过本题 .
有人评论我说 zak 有块筛卷积好做法,不过我又看了一遍他那个博也没咋看懂 . 颤抖 .
关于 \(O(km^{2/3}\log m)\) 做法:也可以考虑直接对递推差分,这样就去掉整除了,不过得到的形式不太能 Dirichlet 前缀和(至少在我看来). 现在应该已经被我卡了 .(upd. abcdefg
以下是博客签名,正文无关
本文来自博客园,作者:Jijidawang,转载请注明原文链接:https://www.cnblogs.com/CDOI-24374/p/17620409.html
版权声明:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议(CC BY-NC-SA 4.0)进行许可。看完如果觉得有用请点个赞吧 QwQ