摘要:
A.找到最大值x,再找出最长的连续的x。 1 #include<cstdio> 2 #include<cstring> 3 #include<iostream> 4 #include<algorithm> 5 #define rep(i,l,r) for (int i=(l); i<=(r); i+ 阅读全文
摘要:
https://www.luogu.org/blog/Sooke/solution-p5280 首先想到对线段树上每个点分别维护有多少棵线段树在它上有标记(f[]),然后想到对于每个操作,根据转移的不同分成5种点。 为了满足第三类点的转移要求,再维护g[],转移类似分类讨论即可。 最后发现前三类点是 阅读全文
摘要:
前两种情况显然直接manacher,对于第三种,枚举回文中心,二分回文半径,哈希判断即可。 阅读全文
摘要:
D1T1:异或粽子 显然令b[]为a[]的前缀和,那么就是在b[]中任取两数异或,求异或结果前k大和。 于是暴力$O(n^2)$显然,60pts。 1 #include<cstdio> 2 #include<algorithm> 3 #define rep(i,l,r) for (int i=(l) 阅读全文
摘要:
用LCT支持:在线加边,单点修改,求一个两个点路径上的所有边BCC的点权和。 用LCT维护边BCC的形态(即缩边双之后的树),2,3操作都是LCT基本操作,重点考虑加边操作。 当这条边的两个端点属于同一BCC时显然没有任何影响。当两个端点不在同一个连通块里时直接在LCT上做link(bel[x],b 阅读全文
摘要:
https://www.cnblogs.com/ljh2000-jump/p/6423399.html 阅读全文
摘要:
笛卡尔树的节点具有两个属性:键值与权值。 中序遍历每个节点,则其键值递增。任意一个父亲的权值都一定大于(小于)其儿子的权值。 由此可知,笛卡尔树的键值具有二叉搜索树的性质,权值具有堆的性质。Treap就是实现了一棵笛卡尔树。 笛卡尔树一般是根据序列建立的,一般以序列下标为键值,序列中的数为权值。 它 阅读全文
摘要:
https://www.cnblogs.com/WAMonster/p/10181214.html 主要用于支持含有较难维护的区间操作与查询的问题,要求其中区间赋值操作(assign())是纯随机的。 注意要先split(r+1)再split(l),最好最后设一个点(n+1,n+1,0) 阅读全文
摘要:
显然先选每个点都取一遍然后再取满次数最优,用最小树形图决定第一次取的顺序。 朱刘算法的流程是(总复杂度O(nm)): 1.对除根外所有点,找到所有指向它的边中权值最小的那一条,记其权值为ind[]。 2.找到所有不包含根的、由(1)中找到的那些边构成的环,并将环缩点。若没有这样的环则结束。 3.将所 阅读全文
摘要:
线段树维护区间内1的个数v,最长1/0连续段长度d1/0,从左端开始最长1/0连续段长度dl1/0,从右端开始最长1/0连续段长度dr1/0,区间覆盖标记和反转标记。 我的方法中覆盖标记和反转标记不能共存,当需要打覆盖标记时先清空反转标记,需要打反转标记时若当前已存在覆盖标记则变为打上相反的覆盖标记 阅读全文