为啥就我这么弱

娘的,又垫底了。一道题不会做,直接没交。——赛后交了下赛时的代码,零分。

\(\sf yspm\) 都知道我卖弱了。我也不想的,但是我除了弱一无所有了。


\(T1\) 的二维偏序,我没看出来。就个裸的 \([l\leqslant a,b\leqslant r]\),我愣是认不出来。

\(T2\) 对时间轴分治(线段树分治似乎可行),我没看出来。写了个 \(\log^3\) 做法,因为写之前复杂度算错了。然后还没调过样例。

小指上的伤口也不见好转。至少这周要好吧。别再拖了。疼。刺痛。

所以这里到底是闲话还是题解。是咒骂吧。我倒挺希望能够在这里写点脏话的。


\(\sf yspm\)\(\sf zero4388\) 是我仅剩的一点现实的乐趣了。

昨天打使命召唤,闪退了,存盘点没了。真倒霉。

但是近 \(30\) 天不知道发生了多少倒霉事情。都不是很吃惊了的说。


\(T3\) 数学题:从 \([0,nm)\) 中选若干数,余数为 \(x\) 的方案数记为 \(f_x\),求 \(\sum f_x^{\thinspace 2}\)\(n,m\leqslant 10^{18}\)

\(\sf crashed\) 仗着自己强,就开始天马行空讲些不得了的东西,我代表数学矮子强烈谴责这种行为。其实是 DYM 的接班人

下面是抄的题解做法。但是复杂度中的符号看不懂,所以不清楚最后一步咋处理的。😢

\[F(x)=\left[\prod_{j=0}^{n-1}(1+x^j)\right]^m\bmod{(x^n-1)} \]

\(\textit{DFT}\) 得到

\[\hat f_u=\left[\prod_{j=0}^{n-1}(1+\omega^{uj})\right]^m \]

于是有

\[f_k =n^{-1}\sum_{u=0}^{n-1}\hat f_u\omega^{-uk} =n^{-1}\sum_{u=0}^{n-1}\omega^{-uk}\left[\prod_{j=0}^{n-1}(1+\omega^{uj})\right]^m \]

\(d=\gcd(u,n)\),由因式定理即得

\[\prod_{j=0}^{n-1}(1+\omega^{uj}) =\left[\prod_{j=0}^{{n\over d}-1}(1+\omega^{\thinspace j}_{n/d})\right]^d =((-1)^{n/d}-1)^d \]

\[\sum_{\gcd(n,u)=d}\omega^{-uk}=\sum_{p\mid{n\over d}}\mu(p)\sum_{dp\mid u}\omega^{-uk} \]

代回原式得

\[f_k=n^{-1}\sum_{d\mid n}((-1)^{n/d}-1)^{dm}\sum_{p\mid{n\over d}}[n\mid dpk]\;\mu(p){n\over dp} \]

注意到 \(k\) 只出现在 \([n\mid dpk]\) 中,且显然实际有用部分是 \(\gcd(k,n)\) 。因此 \(\gcd(k,n)\) 相等时,\(f_k\) 就相等。因此只需对所有 \(n\) 的因子 \(k\) 计算。

简记 \(v_d=((-1)^{n/d}-1)^{dm}\),则上式即

\[f_k=n^{-1}\sum_{dpw=n}[w\mid k]\;v_d\cdot\mu(p)\cdot w \]

由于 \(w\mapsto [w\mid k]\;w\)\(\mu\) 是积性函数,研究其贝尔级数,发现只有 \(+1,-1\) 两项。因此可以 \(\mathcal O(d(n))\) 枚举每个 \(v_d\) 的贡献,要求 \(k\) 在某些质数上的指数固定。

这样我们至少得到个 \(\mathcal O(d(n)\log n)\) 的做法。不清楚能不能过。

还有种聪明的做法即利用 \(f_k=f_{n-k}\) 的特点,转化为求解 \([x^0]F(x)^2\bmod(x^n-1)\) 。这样就只需要算 \(\hat f\),最后提取单点 \(f\),可以做到 \(\mathcal O(d(n))\)

Comment. 其中 \(d(n)\) 表示 \(n\) 的约数个数。据称\(d(n)=\mathcal O(n^{1.066\over\ln\ln n})\) 作估算是比较准确的。

posted @ 2022-08-08 19:39  OneInDark  阅读(271)  评论(3编辑  收藏  举报