CF2014
太难写了。就当 AK 了吧。
按照做题顺序。
H
观察到充要条件是区间内每个数都出现了偶数次,哈希维护奇偶性即可。
F
树形dp,观察到如果选择两个相邻的点那么贡献会 \(-2\times c\),强制钦定这个代价给下面那个点,就可以直接 dp 了。
不知道为什么过的人那么少。
E
将一个拆成两个点,分别代表在该点时有/无马,按照原图连边即可,直接跑 dij 求出到每个点的最短路,枚举汇合点即可。
G
最难写的一集。
考虑一段获得牛奶的连续段,段内的每一天都可以用二分+线段树进行维护,而段之间显然会覆盖一段前缀,二分出这个前缀在哪,然后二分+线段树更改之前天的牛奶即可。
由于这是 div3,我们选择在数据结构外二分。时间复杂度 \(O(n\log^2 n)\)。