摘要: 动态点分治 先建出点分树,每个点上维护两个堆,s1,s2,分别表示子树中到点分树中父亲的所有长度,每个儿子s1的最大值,那么对于每个点答案就是s2的最大+次大,再维护一个s3保存这个。 首先我们要搞一个带删除的堆,那么我们开两个堆就行了,一个保存元素,一个保存被删除的元素,每次一起弹出就行了 然后是 阅读全文
posted @ 2017-11-23 23:06 19992147 阅读(119) 评论(0) 推荐(0) 编辑
摘要: 后缀自动机+线段树 今天比较颓。。。 既然只出现一次,那么就是right=1,于是我们预处理出每个点的right,然后看是否等于一,如果是就更新答案。 更新答案维护两个线段树,如果当前点在延伸[Min,Max]范围内,那么答案就是end-i+1,如果<Min,那么答案就是Min,于是我们维护end+ 阅读全文
posted @ 2017-11-23 23:01 19992147 阅读(128) 评论(0) 推荐(0) 编辑
摘要: kdtree 转换一下,看成点,第一位dfs序,第二维深度,那么满足在子树内dfs序限制,然后kdtree上打标记就行了。 #include<bits/stdc++.h> using namespace std; const int N = 1e5 + 5, mod = 1e9 + 7; int r 阅读全文
posted @ 2017-11-23 00:33 19992147 阅读(174) 评论(0) 推荐(0) 编辑
摘要: kdtree 3维kdtree,就是三个维度轮换着切,我们把每个元素看成一个点,坐标是上次出现的位置,下次出现的位置,自己的位置,第一个<l,第二个>r,第三个[l,r],然后kdtree上爆搜剪枝就行了。 kdtree看起来能解决所有偏序问题。 #include<bits/stdc++.h> us 阅读全文
posted @ 2017-11-23 00:32 19992147 阅读(183) 评论(0) 推荐(0) 编辑