随笔分类 -  数据结构—线段树

摘要:建个SAM,符合要求的串显然是|right|==1的节点多代表的串,设si[i]为right集合大小,p[i]为right最大的r点,这些都可以建出SAM后再parent树上求得 然后对弈si[i]==1的点,考虑它所代表的串是s(p[i] dis[i]+1,p[i])~s(p[i] dis[fa[ 阅读全文
posted @ 2018-11-24 09:24 lokiii 阅读(190) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2018-11-14 16:02 lokiii 阅读(23) 评论(0) 推荐(0)
摘要:全てを明日に任せて踊ろうぜもっと 阅读全文
posted @ 2018-10-25 20:33 lokiii 阅读(279) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2018-10-16 20:49 lokiii 阅读(3) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2018-10-12 17:37 lokiii 阅读(3) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2018-09-29 20:39 lokiii 阅读(1) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2018-09-27 17:57 lokiii 阅读(3) 评论(0) 推荐(0)
摘要:プライド持って 健・康・第・イチ! 阅读全文
posted @ 2018-09-26 21:10 lokiii 阅读(111) 评论(0) 推荐(0)
摘要:You come over and start up a conversation with just me And trust me I'll give it a chance now 阅读全文
posted @ 2018-09-24 21:59 lokiii 阅读(166) 评论(0) 推荐(0)
摘要:この夜よどうか明けないで 迷い道の晴れるまで 阅读全文
posted @ 2018-09-24 11:37 lokiii 阅读(88) 评论(0) 推荐(0)
摘要:这居然是我第一次写线段树合并……所以我居然在合并的时候加点结果WAWAWAMLEMLEMLE……!ro的时候居然直接指到la就行…… 树上差分,每个点建一棵动态开点线段树,然后统计答案的时候合并即可 cpp include include include using namespace std; c 阅读全文
posted @ 2018-09-19 14:26 lokiii 阅读(173) 评论(0) 推荐(0)
摘要:二分mid,然后用1~mid的操作在差分序列上加减,最后把差分序列前缀和起来,看是否有有超过初始r值的 线段树,模拟即可,洛谷上会T一个点(开O2能过) 阅读全文
posted @ 2018-09-13 21:54 lokiii 阅读(277) 评论(0) 推荐(0)
摘要:二分值mid,然后把 =mid的赋值为1,其他赋值为0,每次排序就是算出区间内01的个数,然后分别把0和1放到连续的一段内,这些都可以用线段树来维护 二分的判断条件是操作完之后q位置上是否为1 cpp include include using namespace std; const int N= 阅读全文
posted @ 2018-09-13 18:53 lokiii 阅读(100) 评论(0) 推荐(0)
摘要:合并中间那块的时候没取max……WAWAWA 在线段树上维护一堆东西,分别是len区间长度,sm区间内1的个数,ll0区间从左开始最长连续0,ml0区间中间最长连续0,rl0区间从右开始最长连续0,ll1区间从左开始最长连续1,ml1区间中间最长连续1,rl1区间从右开始最长连续1(起始这六个东西可 阅读全文
posted @ 2018-09-13 11:18 lokiii 阅读(180) 评论(0) 推荐(0)
摘要:裸的树链剖分+线段树 但是要注意一个地方……我WA了好几次才发现取完相反数之后max值和min值是要交换的…… cpp include include using namespace std; const int N=200005; int n,m,h[N],cnt,de[N],va[N],fa[N 阅读全文
posted @ 2018-09-10 21:59 lokiii 阅读(185) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2018-08-20 07:48 lokiii 阅读(2) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2018-08-17 20:34 lokiii 阅读(3) 评论(0) 推荐(0)
摘要:总之就是找前面所有点的斜率都严格小于这个点的这样的点的个数 不管是询问还是修改都非常线段树啊,而且相当眼熟~~是不是和hotel有点像啊~~,大概就是区间内记一个len一个max,分别是当前区间答案和区间最大斜率,然后合并区间的时候用右区间递归,分情况讨论更新左区间 这样是两个log…… cpp i 阅读全文
posted @ 2018-07-28 21:41 lokiii 阅读(120) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2018-07-20 14:55 lokiii 阅读(3) 评论(0) 推荐(0)
摘要:写错一个符号多调一小时系列…… 二分答案,然后判断这个二分区间是否合法: 先按值 从大到小 排序,然后对于值相同的一些区间,如果没有交集则不合法;否则把并集在线段树上打上标记,然后值小于这个值的区间们,如果交集打过标记了,那么不合法,因为这个打过标记的区间一定不会有更小的值了,但是现在有一个更小的数 阅读全文
posted @ 2018-07-05 17:37 lokiii 阅读(156) 评论(0) 推荐(0)