GZOI-NOI2026人大附集训(四)

T1 B(B)

注意一旦两个点之间不连边,则 dis = 0。

如果要两个点之间 dis > 1,则需要两个点都与其他所有点连边。

考虑选择点 \(u\),那么只有与点 \(u\) 相连的点之间才可能 dis > 1。

我们选择度数最小的。容易发现 \(d <= \sqrt m\)

这时候除了相连的这 \(\sqrt m\) 个点,其他的点之间我们可以直接判断,如果没边则 dis = 0,否则 dis = 1。

然后我们考虑计算这 \(\sqrt m\) 个点之间,以及到其他点的距离,直接每个点暴力跑一遍 dfs 即可。补图 dfs 可以做到 \(O(n+m)\)

T2 C(C)

先打表找一些规律。

后面可以总结出来,进入某一位的时候,出去时 0 的位置,只和位数的和,上一个0的位置有关。可以用 dp 处理出这个数组。

然后就是暴力跳了。

T3 D(D)

划分出来的必定是一些链,并且选择的是链的两端。

那么直接树形 dp,线段树合并优化,得到 \(O(n\log n)\)

posted on 2025-12-24 11:12  Evan_song  阅读(4)  评论(0)    收藏  举报