ST03Day2 平衡树

正题

      主要还是用到splay,treap也要会,多打几遍,可以用来可持久化。

      板子就不说了,回去多打几遍吧(flag1

      AVL树和红黑树也不多说了。

      splay的复杂度分析可以回去搞一搞,还挺有意思的,但是老师上课也是直接过(flag2

      [bzoj1014]火星人prefix

      回去写一写,就是用平衡树来维护区间的hash值,然后在外层套一个二分就可以。(flag3

      Gty的游戏

      没有加石子我们可以考虑分奇偶层讨论,然后用dfs来维护子树异或值就可以了,有石子怎么办,在dfs序上找到右边第一个dep比自己小的节点,记它为nex,后面无论什么时刻,[dfn[i],dfn[nex])都是子树。nex实际上就是平衡树加进来的时候的后继。(flag4

       TJOI2013 最长上升子序列

      因为保证数字递增,所以只要知道前面哪个的f值最大即可,带插入强制在线只能平衡树。

      BZOJ2658 小蓝的好友

      因为题目保证黑格子随机,所以我们可以知道对于一行,我们如果处理了一个点往上走最多能走多少,那么就是一个随机的序列,这等价于treap中的fix优先值,然后建立一个treap,算答案可以直接对于每一个节点用组合数算,如果从上往下扫,要支持的操作就是全局+1,部分位置变为0,那么把那些位置分离出来,然后改成0合并回去就可以,具体细节要打一打才知道(flag5

      平衡树的启发式合并

       O(n log n)

       Unknown

      题面:给定一颗树,求任取一个节点x和其子树内一个叶子节点y,y到x路径的最长不下降子序列的长度的最大值。

      输出对于每一个x的答案?

      自下而上用平衡树启发式合并按权值为关键字维护Dp值的前缀最大值即可,这个没写过也要写一写(flag6

      经典树分治题

      给定一棵树,求有多少对点的路径不超过K。

      这题给两个思路,都挺显然的:

      1.考虑点分治,那么只需要在每一层的重心维护一个树状数组就可以。

      2.考虑直接在原树上用splay启发式合并,每次合并查询一下,由于查询不支持平衡树性质,所以也是两个log,但常数较大,为什么查询不支持平衡树性质要放在讨论splay复杂度的时候去考虑(flag7

      逆序对

      看清楚题,就可以知道只需要交换两个部分,因为是排列,所以将一个元素移到最后面的代价是n+1-2pi,用splay来支持交换,维护前缀最小值即可。

      Hitchhiking in the Baltic States

      考虑求LIS的另外一种形式,记录长度为j的LIS最后一位最小是多少,因为问的是严格递增,那么我们可以将第i位-i然后再离散化。

      那么明显可以得到f[i][j]->f[i+1][j] || max(f[i][j]+1,l_{i+1})\to f[i+1][j+1](f[i][j]<r_{i+1})

      以j为关键字,f为权值建一棵平衡树,每次修改相当于将权值在[l_{i+1},r_{i+1}-1]之间的f右移一位,再+1,右移可以考虑删除该区间最右边的元素,再在区间左边插入一个与原来最左边元素相同的元素,再特殊处理一下最右边的后继节点。

      T-shirts

      

      以剩余钱数为关键字建一棵平衡树,按品质降序,价格升序,显然贪心买是没有问题的,考虑当前要花x元,那么将[x,2x)拿出来就可以了-x之后插回去,然后将[x,2x)打上标记-x就可以了,这样每个点只会被缩log次,所以时间复杂度就是两个log。

      NOI2007 货币兑换

      这题咕咕咕,回去一定补(flag8

      merge

      

      可以把一个前缀最大值看成是一个关键点,一个关键点到下一个关键点的前一个点称为一段,那么,一个关键点一旦被加进去了,后面的一段也一定被加进去了,对于段按照位置来建平衡树,然后对于m所在的区间,那么就暴力往后做一遍前缀最大值,拆成若干个段,在平衡树上二分找到拆出来的段应在的位置,就可以了,由于最多被拆成n个元素,每次加和删只跟拆出来的块数有关,所以答案就是n log n

      HNOI2017 单旋

      老师没讲,回去做做(flag9

剩下的就是替罪羊树和KDT,这两个东西回去会写模板就行,多练(flag10

猜你喜欢

转载自blog.csdn.net/Deep_Kevin/article/details/108045717