摘要: "题目" 这不是线段树模板2放$lct$上了吗 于是开始码码码 之后一直wawawa 于是开始调调调 之后旁边的慎老师看了一看代码就说,你下放乘法标记的时候不乘加法标记吗 我:。。。 代码 cpp include include include include define maxn 300005 阅读全文
posted @ 2019-02-12 21:03 asuldb 阅读(213) 评论(0) 推荐(0) 编辑
摘要: "题目" 由于始终保证连通性于是我们可以用$LCT$来维护这个森林 三个操作分别是$link,cut,findroot$ 代码 cpp include include define maxn 10005 define re register inline int read() { char c=ge 阅读全文
posted @ 2019-02-12 18:54 asuldb 阅读(165) 评论(0) 推荐(0) 编辑
摘要: "题目" 终于去写$LCT$了 "这个大爷讲的挺好的" 板子 cpp include include include include define maxn 300005 define re register define LL long long define max(a,b) ((a) (b)? 阅读全文
posted @ 2019-02-12 18:52 asuldb 阅读(148) 评论(0) 推荐(0) 编辑
摘要: 还有这么板子的题? 和你谷上后缀自动机的板子基本一样,区别就是之后这个位置是$0$才计入贡献 代码 cpp include include define maxn 400005 define re register define LL long long define max(a,b) ((a) ( 阅读全文
posted @ 2019-02-12 16:51 asuldb 阅读(211) 评论(0) 推荐(0) 编辑
摘要: 厚颜无耻的发一篇可能是全网最劣解法 我们发现要求给定的串所有不同的循环同构出现的次数,可以直接暴力啊 因为一个长度为$n$的串,不同的循环同构次数显然是不会超过$n$的,所以我们可以直接对每一个循环通过分别求一下其出现次数 求其出现次数当然可以交给$SAM$来搞了 于是我们把所有的串都插入$SAM$ 阅读全文
posted @ 2019-02-12 16:37 asuldb 阅读(205) 评论(0) 推荐(0) 编辑
摘要: "题目" 直接线段树合并就好了 之后在线段树上二分贪心选取金额较少的 如果是左偏树的话就开一个大根堆,根和子树顺次合并,合并之后堆内所有元素总和如果大于$m$就删除堆顶,由于每个元素只会被删除一次,所以复杂度非常科学 代码 cpp include include include include de 阅读全文
posted @ 2019-02-12 14:30 asuldb 阅读(169) 评论(0) 推荐(0) 编辑
摘要: "题目" 多了区间翻转,之后没了 区间翻转的标记记得在$kth$的时候下传 代码 cpp include include include include define maxn 2100005 define re register int n,m,root,len,pos=1; char val[m 阅读全文
posted @ 2019-02-12 13:11 asuldb 阅读(170) 评论(0) 推荐(0) 编辑
摘要: "题目" 发现这样一句话就会导致$T$ 并不是很知道为什么,可能这是某种未定义行为在不同编译器下会有不同后果? 至于这道题就很简单了,几个有关光标位置的操作就用一个变量模拟就好了 插入的话把这个位置转出来构造一棵完美$splay$插入就好了 删除直接转出区间断开的父亲的链接 输出直接转出区间中序遍历 阅读全文
posted @ 2019-02-12 12:25 asuldb 阅读(230) 评论(0) 推荐(0) 编辑