代晨昕讲课笔记整理

区间线性基

要求q次[l,r]区间内的最大异或和之类的

考虑维护线性基的前缀和,同时要做一些特殊处理

在插入的时候应当尽量将位置靠后的数放在线性基的高位。

即,如果插入时枚举到i位遇到一个该位相同的数,并且插入的数在它的右边,那么把它顶掉,让它异或上自己然后代替自己往后一位枚举。

查询时我们在liner_base[r]中从高往低,如果有在区间内的且异或后能变大的,就异或上,否则看下一位。

这样就可以O(n)维护了

全序贪心问题

给你n个物品,每个物品有几个属性。你需要把它们任意排序后排成一列,使得按某种方式计算的贡献最大(最小)。

分析方法:我们先假装已知最佳顺序,那么交换该序列的任意两项都将使得贡献变小。

据此我们可以把两个序列的贡献表达式写出来,列一个不等式。

将两边化简成【左右结构一样的,且只与一项的属性有关】,那么我们根据这个化简的结果为依据进行排序即可。

Noip2012 国王游戏:

 

 

 如果把这个问题搬到树上。可以用并查集来做。

posted @ 2021-08-17 08:40  linzhuohang  阅读(71)  评论(0编辑  收藏  举报