Codeforces Round 974 (Div. 3)
A. Robin Helps
模拟即可。
B. Robin Hood and the Major Oak
注意到 \(i^i \equiv i \pmod 2\),因此 \(\sum i^i \equiv \sum i \pmod 2\)。等差数列求和即可。
C. Robin Hood in Town
二分答案即可。
D. Robert Hood and Mrs Hood
枚举区间 \([l, l + d - 1]\)。此时我们需要快速求解有多少区间与 \([l, l + d - 1]\) 有交。
考虑求解其补集。注意到 \([l_1,r_1]\) 与 \([l_2, r_2]\) 无交意味 \(r_1 < l_2\) 或 \(r_2 < l_1\)。问题变成了求有多少区间的左端点小于某个值,以及有多少区间的右端点大于某个值。前缀和预处理即可。
E. Rendez-vous de Marian et Robin
考虑拆点。我们将点 \(i\) 拆成点 \(i\) 和点 \(i + n\),其中点 \(i\) 表示到 \(i\) 点时没有骑马,点 \(i + n\) 表示到 \(i\) 点时骑上了马。那么对于一个有马的点 \(u\) 连边 \((u, u+n,0)\),对于一条边 \(u, v, c\) 连边 \((u,v,c)\) 以及 \((u+n,v+n, c/2)\)。然后分别从点 \(1, n\) 跑 Dijkstra 求单源最短路。最后枚举两人到哪个点集合,并分别枚举两人到达时是否骑马即可。
F. Sheriff's Defense
设 \(f(u, 0/1)\) 表示若只考虑以 \(u\) 为根的子树,且 \(u\) 是否被强化过的最多金币。
转移考虑 \(u\) 的每个儿子是否被强化。令 \(u\) 的儿子为 \(v\),则:
H. Robin Hood Archery
注意到当区间长度为奇数时一定为 NO。答案为 YES 当且仅当长度为偶数,且区间内第 \(2k-1\) 大的数都等于 \(2k\) 大的数。
这个条件等价于区间内每种数字都出现了偶数次。
考虑异或哈希。该命题成立的必要条件是区间内所有数的异或和为 \(0\)。我们可以通过赋随机权值的方式使其充分性提高。
快速求解区间异或和可以差分。