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)\)
浙公网安备 33010602011771号