日记

日记

Tue Jun 24 2025
5 分钟
1074 字

神秘稳定婚姻

CA Loves GCD Link to

神秘小 dp。

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

DZY Loves Math VI Link to

孩子们,我又来莫反了。

钦定 nmn \le m,直接开始推式子:

ans=i=1nj=1mlcm(i,j)gcd(i,j)=i=1nj=1m(ijgcd(i,j))gcd(i,j)=g=1ni=1ngj=1mg(ig×jgg)g[gcd(i,j)=1]=g=1ni=1ngj=1mg(gij)g[gcd(i,j)=1]=g=1nggi=1ngj=1mg(ij)gdgcd(i,j)μ(d)=g=1nggd=1ngμ(d)i=1ngdj=1ngd(id×jd)g=g=1nggd=1ngμ(d)i=1ngdj=1ngd(ij)g×d2g=g=1nggd=1ngμ(d)×d2gi=1ngdigj=1mgdjg\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=1nggd=1ngμ(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(nlogn)O(n \log n)

烷基计数 Link to

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

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

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

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

dpi={(dpx+313)x=z(dpx+212)×dpzx=y(dpy+212)×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=vson(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(dpd2×dpiddp_i = \min(dp_{d - 2} \times dp_{\frac{i}{d}}。时间复杂度 O(nn)O(n\sqrt{n})

Match, Mod, Minimize Link to

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

后日谈 Link to 后日谈

肚子疼。