2023.8.10 闲话

看了一眼 STAOI R3 评价,主要都是针对 T2 的,后两道没多少评价,额 . T3 评价有点分化,可能和个人爱好有关 .

T2 数据较弱,我先谢罪 /wq

不过赛时过 T4 的没有写正解的,恼 . 赛后改成 2.5s 了,都得死 /fn(upd. 没杀掉,算了

其实好像时限是 1.5 倍 std 时间就行,没注意到 . 当时写的 std 跑的也不是那么快,就开的 4s,然后就被各种艹过。。

大豆

对于一个序列 {a},定义其大豆化 (Soybeanization) 序列 {b} 由如下操作得到:

  1. 初始 {b}{a} 相等。
  2. n 从小到大遍历整个正整数集,对于每个 n,进行操作:
    • i 从小到大遍历整个不小于 2 的正整数集,对于每个 i,操作 bnbnbni
    • 如果 i>n,结束过程。

进而,定义一个序列的 k-大豆化序列为进行 k 次大豆化操作后得到的序列。

现在给你一个整数序列 {tn},将 {t} 复制无穷遍得到序列 {a},求 {a}k-大豆化序列的第 m 项。

序列下标从 1 开始。答案可能很大,对 23068673 取模。

1n1041m1010k{1,2,3}

其实就是 SoyTony 筛啦,不过这个的预处理部分没有好组合意义,Rolling_star 给出了代数推导,感谢 .

首先考虑 {a} 经过一次大豆化之后得到的序列 {b} 满足递推:

bm=amd=2mbmd

那么暴力递归记忆化即可做到 O(km3/4) .

原递推式可以改写为:

bm=am+bmd=1mbmd

那么就有 d=1mbmd=am,施整除 Möbius 反演,即得:

bm=i=1mμ(i)ami

(我本来以为这个整除 Möbius 反演没有啥应用的,没想到还能和 SoyTony 筛联系上)

进而考察 {b} 的差分:

bmbm1=i=1mμ(i)(amiam1i)=imμ(i)(amiami1)

其中 a0=0 .

那么 Dirichlet 前缀和即可求出 b 的差分,前缀和后即为 b,从而可以做到小范围预处理,若 B 的部分预处理,结合杜教筛的时间复杂度分析,复杂度就是 O(BloglogB+mB),取 B=m2/3 那么就是 O(km2/3loglogm),可以通过本题 .

有人评论我说 zak 有块筛卷积好做法,不过我又看了一遍他那个博也没咋看懂 . 颤抖 .

关于 O(km2/3logm) 做法:也可以考虑直接对递推差分,这样就去掉整除了,不过得到的形式不太能 Dirichlet 前缀和(至少在我看来). 现在应该已经被我卡了 .(upd. abcdefg

posted @   yspm  阅读(125)  评论(2编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
历史上的今天:
2022-08-10 湖南集训 大新闻 社论
😅​
点击右上角即可分享
微信分享提示