「十二省联考」贰〇壹玖

异或粽子

之前大假期集训的时候好像做过,但是已经忘了,可能是水过去的

做之前建议先做一下NOI2010超级钢琴,跟这道题的思路是一样的

要求的是这若干个区间贡献的前 (k) 大,不妨枚举每一个左端点,用 (RMQ) (超级钢琴) 或者可持久化 (01Trie) (异或粽子)维护出贡献最大的右端点,放到一个大根堆里,堆里每个元素 (Max(i,l,r)) 表示以 (i) 为左端点,右端点在 ([l,r]) 的最大贡献

每次取出堆顶元素 (Max(i,l,r)),并求出最大贡献的位置 (t),更新答案,并将 (Max(i,l,t-1))(Max(i,t+1,r)) 放入堆里

比较新颖的思路,如果求若干个区间前 (k) 大时,没准会用到

字符串问题

骗分过样例

皮配

春节十二响

应该算是这套题里面最简单的了吧,但我还是没有想到正解

对于每个节点开一个优先队列,直接 (DFS),走到一个节点 (u),将它的所有儿子贪心地合并,最后再把自己的值 (push) 进去

不过合并的时候要启发式合并,把小的并到大的里面,复杂度是 (Theta (nlog^2n))

希望

原文地址:https://www.cnblogs.com/Rubyonly233/p/14604631.html