日记

日记

Wed Jun 25 2025
5 label.readTime
1074 label.wordCount

神秘稳定婚姻

CA Loves GCD Link to

神秘小 dp。

设 dpi,jdp_{i,j} 表示前 ii 个数里凑出一个 gcd⁡=j\gcd = j 的集合的方案数。转移是平凡的,注意预处理 gcd⁡\gcd,不然时间复杂度就是 O(T⋅nVlog⁡V)O(T \cdot nV \log V),过不了。预处理就是 O(V2log⁡V+T⋅nV)O(V^2\log V + T \cdot nV)。

DZY Loves Math VI Link to

孩子们,我又来莫反了。

钦定 n≤mn \le m,直接开始推式子:

ans=∑i=1n∑j=1mlcm⁡(i,j)gcd⁡(i,j)=∑i=1n∑j=1m(ijgcd⁡(i,j))gcd⁡(i,j)=∑g=1n∑i=1⌊ng⌋∑j=1⌊mg⌋(ig×jgg)g[gcd⁡(i,j)=1]=∑g=1n∑i=1⌊ng⌋∑j=1⌊mg⌋(gij)g[gcd⁡(i,j)=1]=∑g=1ngg∑i=1⌊ng⌋∑j=1⌊mg⌋(ij)g∑d∣gcd⁡(i,j)μ(d)=∑g=1ngg∑d=1⌊ng⌋μ(d)∑i=1⌊ngd⌋∑j=1⌊ngd⌋(id×jd)g=∑g=1ngg∑d=1⌊ng⌋μ(d)∑i=1⌊ngd⌋∑j=1⌊ngd⌋(ij)g×d2g=∑g=1ngg∑d=1⌊ng⌋μ(d)×d2g∑i=1⌊ngd⌋ig∑j=1⌊mgd⌋jg\begin{aligned} ans & = \sum_{i = 1}^{n}\sum_{j = 1}^{m}{\operatorname{lcm}(i,j)^{\gcd(i,j)}} \\ & = \sum_{i = 1}^{n}\sum_{j = 1}^{m}(\frac{ij}{\gcd(i,j)})^{\gcd(i,j)} \\ & = \sum_{g = 1}^{n}\sum_{i = 1}^{\lfloor \frac{n}{g} \rfloor}\sum_{j = 1}^{\lfloor \frac{m}{g} \rfloor}(\frac{ig \times jg}{g})^g[\gcd(i,j) = 1] \\ & = \sum_{g = 1}^{n}\sum_{i = 1}^{\lfloor \frac{n}{g} \rfloor}\sum_{j = 1}^{\lfloor \frac{m}{g} \rfloor}(gij)^g[\gcd(i,j) = 1] \\ & = \sum_{g = 1}^{n}g^g\sum_{i = 1}^{\lfloor \frac{n}{g} \rfloor}\sum_{j = 1}^{\lfloor \frac{m}{g} \rfloor}(ij)^g\sum_{d \mid \gcd(i,j)}\mu(d) \\ & = \sum_{g = 1}^{n}g^g\sum_{d = 1}^{\lfloor \frac{n}{g}\rfloor}\mu(d)\sum_{i = 1}^{\lfloor \frac{n}{gd} \rfloor}\sum_{j = 1}^{\lfloor \frac{n}{gd} \rfloor}(id \times jd)^g \\ & = \sum_{g = 1}^{n}g^g\sum_{d = 1}^{\lfloor \frac{n}{g}\rfloor}\mu(d)\sum_{i = 1}^{\lfloor \frac{n}{gd} \rfloor}\sum_{j = 1}^{\lfloor \frac{n}{gd} \rfloor}(ij)^g \times d^{2g} \\ & = \sum_{g = 1}^{n}g^g\sum_{d = 1}^{\lfloor \frac{n}{g} \rfloor}\mu(d) \times d^{2g}\sum_{i = 1}^{\lfloor \frac{n}{gd} \rfloor}i^g\sum_{j = 1}^{\lfloor \frac{m}{gd} \rfloor}j^g \end{aligned}

我们发现这一坨:∑g=1ngg∑d=1⌊ng⌋μ(d)×d2g\sum_{g = 1}^{n}g^g\sum_{d = 1}^{\lfloor \frac{n}{g} \rfloor}\mu(d) \times d^{2g} 的复杂度是一个调和级数,所以我们只用考虑如何 O(1)O(1) 求解 ∑i=1nig\sum_{i = 1}^{n}i^g 就是了。由于枚举 gg 单增,我们维护一个 valival_i 表示当前的 igi^g,因为 ⌊mgd⌋\lfloor \frac{m}{gd} \rfloor 最多就是个 ⌊mg⌋\lfloor \frac{m}{g} \rfloor,所以我们只用更新 i∈[1,⌊mg⌋]i \in [1,\lfloor \frac{m}{g} \rfloor] 并求前缀和就行了,也是调和级数,O(nlog⁡n)O(n \log n)。

烷基计数 Link to

看起来很简单,实则不然。

我们设 dpidp_i 表示有 ii 个点的情况,初始 dp0=1dp_0 = 1,转移就是枚举两颗子树的大小 x,yx,y,剩下的 z=i−1−x−yz = i - 1 - x - y。我们钦定 x≤y≤zx \le y \le z。那么有转移:dpi←dpx×dpy×dpzdp_i \gets dp_x \times dp_y \times dp_z。蛋柿,我们发现,如果有 x=yx = y 或者别的相等,那么这玩意立马暴毙。

我门发现,当有两个数相等的时候,就例如 x=yx = y,那么就相当于在 dpxdp_x 里取两个可重的不做区分的数的方案数。显然不能简单的 dpx2dp_x^2。这个的方案数是 (dpx+2−12)\binom{dp_x + 2 - 1}{2},具体的自己下来去推。

对于三个相等的,就相当于在 dpxdp_x 里取三个可重的不做区分的数。方案数就是 (dpx+3−13)\binom{dp_x + 3 - 1}{3}。那么我们转移就是:

dpi={(dpx+3−13)x=z(dpx+2−12)×dpzx=y(dpy+2−12)×dpxy=zdpx×dpy×dpzotherwise.dp_i = \begin{cases} \binom{dp_x + 3 - 1}{3} & x = z \\ \binom{dp_x + 2 - 1}{2} \times dp_z & x = y \\ \binom{dp_y + 2 - 1}{2} \times dp_x & y = z \\ dp_x \times dp_y \times dp_z & \text{otherwise.} \end{cases}

这就很好做了。

Tree Colorings Link to

我们发现,如果一个点不是绿色,那么它的子树一定都和它一个颜色。因为根是绿色,所以如果它的子孙要到根,就得经过它,它就只能是绿色或者和它的子孙一个色。

考虑在树的形态固定时怎么做。设 dpudp_u 表示以这个点为根的方案数。那么显然有 dpu=∏v∈son(u)dpv+2dp_u = \prod_{v \in son(u)}dp_v + 2。这个 dpvdp_v 表示 vv 还是绿色的方案数,22 表示这个 vv 是其他的色的方案数。

我们发现这个方案数一定是很多个数乘起来的,所以我们设 dpidp_i 表示方案数恰好是 ii 时最小的点数。那么我们枚举 ii 因数 dd,注意 d>2d > 2。那么就有 dpi=min⁡(dpd−2×dpiddp_i = \min(dp_{d - 2} \times dp_{\frac{i}{d}}。时间复杂度 O(nn)O(n\sqrt{n})。

Match, Mod, Minimize Link to

我们把 aia_i 变成 m−aim - a_i,那么原式就变成了 max⁡((bi−ai) mod m)\max((b_i - a_i) \bmod m)。我们发现,对于 bi<aib_i < a_i,答案是 bi+m−aib_i + m - a_i,那么答案就是把一些 bi+mb_i + m,使得 bi≥aib_i \ge a_i,求 max⁡((bi−ai) mod m)\max((b_i - a_i) \bmod m)。显然我们应该把 a,ba,b 都按升序排序。我们发现加 mm 的那些数一定是最小的几个,且加的数应该越小越优。直接二分出最小的加 mm 的数的个数能够使得 ∀i∈[1,n],bi≥ai\forall i \in [1,n],b_i \ge a_i,求出答案就是了。

后日谈 Link to 后日谈

肚子疼。