春日为你写下了几行诗句

在精进了一些我也不知道有什么用的锤子本领之后,尝试复活。

CF2176F Omega Numbers

考虑贡献可以写成 \(\omega(a_i)+\omega(a_j)-\omega(\gcd(a_i,a_j))\),枚举较大的值和 \(\gcd\),此时只需要求出有多少 \(a_j\) 满足 \(\gcd(a_j,a_i)=x\),因为 \(\omega\) 的限制显然可以分层做。注意到 \(a_i\) 固定,扫描的时候在 \(a_j\) 的因子处记录贡献,然后发现是一个系数和质因子 popcount 相关的容斥。写出式子后可以用狄利克雷后缀和维护。时间复杂度 \(O(7^2\times n\ln n)\),需要去重。

一种复杂度差不多但看上去就快很多的做法是不分层,然后记录一个 \(7\) 次多项式,拉插一下。实际上这个多项式可以对系数压位算(就是插进去一个比较大的值罢了),用两个 __int128 做就是 \(O(7n\ln n)\) 的;但好像 __int128 太慢的,导致跑的没赛时做法快,改成两个 long long 一个 int 之后比赛时做法快了 eps

还有 \(O(7^2\times 2^6\times n)\) 做法,不需要什么狄利克雷后缀和手法,睡醒学习一下。

posted @ 2025-12-12 02:30  BYR_KKK  阅读(6)  评论(0)    收藏  举报