【VP 记录】EDU078
记录
只会 ABC,C 还卡了很久。D 题赛后发现是用 set,以后要多练练 map/set。
题解
A. Shuffle Hashing
处理各个字母前缀的出现次数,枚举每个区间作为
B. A and B
发现要求就是依次加
所以先求和直到
-
若
sum=k ,则答案为i -
若
sum\neq k ,设差值x=sum-k ,若x 为偶数可直接从前面的数中选出x 的一半放给另一个数,否则需要i+1 或i+2 中为奇数的一个来确保奇偶性。C. Berry Jam
问题可以看成要选
a 数组的一段前缀和b 数组的一段后缀,发现要两者数量相等,也就是两段中1 和2 的数量差互为相反数,因此设f_i 和g_i 分别表示两种的数量差为i 在a 和b 中的最大长度。
用前缀和后缀处理
D. Segment Tree
发现
之后用 set 维护所有的线段,每次在 set 上二分,把所有边加进去,最后并查集判断连通即可。
E. Tests for problem D
首先发现如果
所以进行树形 dp,每次先递归下去处理完子树的左端点,接着确定根的左端点,最后逆序确定所有子节点的右端点,这样所有子节点是逐个包含的,保证不会有边。