NOIP2024模拟赛22
A. 序列
一道简单的 \(ST\) 表题,但是有不用 \(ST\) 表的做法。由于数据范围是 \(5\times 10^6\) 所以数组稍微开大一点,比如 \(st[23][5000005]\) 开成了 \(st[24][5000005]\) 就刚好会超空间。
不过我倒是因为 \(sf[5000005]\) 中间不小心多打了一个零 \(MLE\) 了。下次吸取教训。
B. 道路
全八中只有元首一个人通过,我严重怀疑他是抄的题解。
一个贪心题,主要是要从小环的合并入手。把 \(a\) 和 \(b\) 数组分别从小到大排序后相同位置的相连,这样会形成一些不联通的小环。考虑把 \(id_a[i]\) 连到 \(id_b[i-1]\),相比 \(id_a[i]\) 连到 \(id_b[i+1]\) 造成 \(id_a[n]\) 连到 \(id_b[1]\),这样要更优。所以用最小生成树的方式把这些环合并,拿出答案。
其实正解看起来既简单又简洁,但是合并环的角度并不容易想到。
C. 长者
一道和生成树有关的期望题。
既然是两点权异或起来得边权,则应从二进制入手。
考虑到最小生成树的生成方式,那么越高位有不同的边越后选到。所以可以从最高位把当前 \(n\) 划分为两部分。枚举 \(0\) 的个数。两部分内部最高位是没有贡献的,则可以划分为两部分内部最高位减小 \(1\) 的生成树,再加上最高位为 \(1\) 的一条边。因此可以 \(dp\)。

浙公网安备 33010602011771号