2024.10.15总结


但是我 A 没去 freopen

A:

随机数据大🐍。

对于一个 aa,至多有一个 b=anmoda<ab=a-n\bmod a<a,因此所有点构成一个森林。

对于两个点暴力跳祖先即可,数据随机,期望每次缩小一半,可过。

B:

首先每行保留前 mm 个点,这样有效点数就减少到了 m2m^2 量级,每次钦定右侧某个点必选,再枚举与它匹配的左侧点,这就要求排在当前这个点前的右侧点都能被其他左侧点选择,加入队列重复这个过程即可,若队列长度大于 mm 则直接跳出。

C:

考虑拆贡献,等价于对于每个点集,选一个给出 aia_i 的贡献,剩下是 11 的贡献,加起来。

dpi,j,kdp_{i,j,k} 表示 ii 子树里,有 jj 个点未被取且给出 11 的贡献,kk 个未被取且给出 aia_i 的贡献。

分类讨论当前子树根是否取,转移即可。

核心代码这样:

D:

*3500 改牛魔。