2024.10.15总结

本文于 github 博客持续更新

但是我 A 没去 freopen

A:

随机数据大🐍。

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

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

B:

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

C:

考虑拆贡献,等价于对于每个点集,选一个给出 \(a_i\) 的贡献,剩下是 \(1\) 的贡献,加起来。

\(dp_{i,j,k}\) 表示 \(i\) 子树里,有 \(j\) 个点未被取且给出 \(1\) 的贡献,\(k\) 个未被取且给出 \(a_i\) 的贡献。

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

核心代码这样:

D:

*3500 改牛魔。

posted @ 2024-10-15 16:56  鳶一折紙  阅读(11)  评论(0编辑  收藏  举报