Codeforces Round 862 (Div. 2)

B

  • 首先一定是提最小的字母,其次发现,如果有多个最小的,则最后的那一个才是最优的(因为前面的提走了,就会在更早的地方没有最小的)

C

  • 数学公式化简,set 维护邻值即可

D

  • 首先不可能每个都算,因为边的变化与最远能到达有关,所以想到考虑每个点最远能到达的点,也即是求每个点的最远距离。对于最远距离大于等于 $k$ 的点,发现一定能组成一个集合,而剩下的各自为一个集合
  • 所以问题变为求每个点的最远距离。$$每个:的最远距离就是到一个直径的两个端点的距离的较大值$$,不用 DP,三次 DFS 即可

E

  • 考虑暴力转移,则每次转移最坏 $O(n)$
  • 考虑题目性质,发现如果没有任何一个值出现两次,则都为 0;如果最大可能值出现了 3 次及以上,则都为此值;如果最大可能指出现了 2 次,令两点为 $u$ $v$,发现两点路径以外的答案都是此值,两点路径之内的答案暴力转移每个点只会转移 1 次
  • 所以就变为了维护两个个数 (map)及候选答案(set),以及求路径,并递归转移

Codeforces Round 862 (Div. 2)
https://lllei.top/2023/05/22/contest6/
作者
Lei
发布于
2023年5月22日
许可协议