小号打的抽象比赛,谁知道再给我 30 min 能不能 AK?
AB 一眼。
C
unordered_map
会被卡,建议 multiset
。
D
前缀和后缀和。
E
发现列和行是独立的,于是对列和行分别检查。若置换矛盾,则不合法。
F
经过观察,一行的答案为后缀最小值 -1。所以 F1 就能做出来了。
考虑 F2,对行拆贡献,维护后缀次小值即可。
G
很一眼,这次 G 怎么这么简单。
先不管操作 1。操作二本质上是要求找到 \(u\),使得 \(u\rightarrow v\) 路径上的异或和 \(\oplus x\) 最大。很典的 trick 是 \(u\rightarrow v\) 的异或和为 \(f_u\oplus f_v\),\(f_i\) 是 \(i\) 到根的异或和。于是相当于给出 \(f_v\) 和 \(x\),找一个 \(f_v\) 使得答案最大,直接扔到 01 trie 上贪心。
加上操作 1,令 \(sum\) 为所有操作 1 的异或和。此时对操作二中 \(u\) 和 \(v\) 的深度分讨,令根的深度为 \(0\)。如果深度为偶数,则没有影响;若为奇数,则最后要异或上 \(sum\)。对深度的奇偶性建两棵 01trie 即可。
赛时没调完,菜。
标签:后缀,CF1980,异或,深度,操作,oplus,rightarrow From: https://www.cnblogs.com/BYR-KKK/p/18231540