2025.6.24 模拟赛

6.24 模拟赛

50+20+40=110,rk 52/86

最小丑的一集,两个签到一个也没切/kk

sct

找最近的交点这件事看上去就很不可做,直接考虑二分转化成求第 \(m\) 远交点的距离,即求距离 \(\le MID\) 的交点个数。

注意到这是一个以关键点为圆心的圆,求圆内交点个数。每条直线要么与圆相离,要么被截成一段弦。圆上两条弦是否有交等价于断环为链后的区间是否相交(不包含)。

用 arctan 把端点转化成极角,排序后扫描线即可(求一段区间内的右端点个数,离散化后树状数组维护)。

注意圆上可能恰有多个交点,于是二分时求最大的交点数 \(<m\) 的,剩下的交点距离都按照 \(MID+eps\) 算。

num

数论集合题,但其实也没有很困难的式子。

容易想到枚举 gcd 后拆贡献到每个质数上,但发现会算重,后面就不会推了/kk

key:\(\sum\limits_{d|n}\varphi(d)=n\)

这样我们就可以直接枚举 gcd了,转化为:\(\prod_{d=1}^m(\prod_{d|x_i} {\rm lcm}(x_i))^{\varphi(d)}\)

也就是 \(\prod\limits_{d=1}^m d^{\varphi(d)\lfloor{m/d}\rfloor^n}(\prod\limits_{1\le x_i\le \lfloor{m/d}\rfloor} {\rm lcm}(x_i))^{\varphi(d)}\)

发现有很多部分需要快速幂,这样就没办法线性,考虑把答案拆成 \(\prod i^{a_i}\) 的形式,最后再对质数做快速幂。

第一部分只需要线性筛 \(i^n \pmod {MOD-1}\) 即可。

接下来要计算 \(f(m/d,n)\)\(\varphi (d)\) 次方的积,考虑计数 \(p_i|lcm\) 的情况对每个质数拆贡献。

对于一个 \(f(m,n)\)\(p\) 的贡献是 \(\sum_i m^n-(m-\lfloor m/p\rfloor)^n\),同样可以线性筛。

整除分块,只对本质不同的 \(\lfloor m/d\rfloor\) 统计贡献,乘上一段区间的 \(\varphi(d)\) 的和即可。

似乎可以证明这样做的复杂度仍然是 \(O(\frac{m}{\ln m})\) 的(或者 \(O(m)\)?)。

得到所有 \(a_i\) 后倒序枚举 \(i\),把贡献拆到 \(p\)\(i/p\) 上,只在质数位置做快速幂,复杂度 \(O(\frac{m}{\ln m}\log MOD)\)

tree

无根树一般在直径中点处计数。

定义孤点的深度为 \(1\)

若直径中点在边上,则要求两边都是深度 \(\frac{L+1}{2}\) 的有根树。
若在点上,则要求所有子树深度 \(\le \frac{L}{2}\),且有至少两棵子树深度 \(=\frac{L}{2}\),可以直接容斥掉全 \(<\frac{L}{2}\) 和只有一棵子树 \(=\frac{L}{2}\) 的情况。

考虑处理出 $f_{i,j} $ 表示大小为 \(i\),深度 \(\le j\) 的有根树数量。

由于是无标号,子树内部没有顺序,考虑从小到大枚举子树大小插入。

具体的,\(f_{i-k\times sz,j}\binom{f_{sz,j-1}+k-1}{k}\to f_{i,j}\)

这里有一个从大小为 \(n\) 的集合中可重复选 \(m\) 个的组合数,本质是考虑 \(n+k-1\)\(k\),然后给第 \(i\) 个减去 \(i-1\) 得到可重编号,容易证明这是一一对应的。

组合数可以在算 \(j-1\) 的时候预处理出来,枚举 \(k\) 是调和级数,复杂度容易做到 \(O(n^3\ln n)\)

还有一些多项式优化转移可以做到更优的复杂度。

posted @ 2025-06-25 09:41  Cindy_Li  阅读(9)  评论(0)    收藏  举报