首页 > 其他分享 >CF1980

CF1980

时间:2024-06-04 19:23:07浏览次数:25  
标签:后缀 CF1980 异或 深度 操作 oplus rightarrow

小号打的抽象比赛,谁知道再给我 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

相关文章