06 2020 档案

摘要:考虑把每一个区间单独统计,令f[i]表示第i个区间有标记的次数,g[i]表示第i个区间及其祖先中存在标记的次数,然后对于操作将所有区间分为5类(T为已执行操作个数): 1.被修改,那么f[i]+=2Tg[i]+=2T(定义修改为执行了tag=1) 2.被经过,$f[ 阅读全文
posted @ 2020-06-27 14:30 PYWBKTDA 阅读(136) 评论(0) 推荐(0) 编辑
摘要:建立SAM,求出每一个节点最左边的出现位置(即right集合中的最小元素,在树上dfs即可) 枚举左端点i和右端点j(保证j是最小的满足s[i,j)不是s[0,i)的子串),维护k表示s[i,j)所对应的位置,i+1可以通过找到nex[k]来实现,j+1直接在SAM上走即可, 阅读全文
posted @ 2020-06-20 06:47 PYWBKTDA 阅读(91) 评论(0) 推荐(0) 编辑
摘要:令ai,j(ji)表示第i个人的方案中给第j个人ai,j的钱,有以下性质: 1.如果第j个人一定同意(否则就会死)第i个人的方案,那么ai,j=0(容易发现一定同意的人就是在上一个不是-1之后的人) 2.否则$a_{i,j}=1+\max_{1\le t<i}a 阅读全文
posted @ 2020-06-18 18:25 PYWBKTDA 阅读(152) 评论(0) 推荐(0) 编辑
摘要:定义S对应的数组为ai=min0j<i,Sj=Siij,特别的,若不存在j,令ai=i,那么容易发现存在双射关系就意味这两者对应的数组相同 因此,考虑需要单词为ai,询问串对应的为bi,那么如果b[i,i+la)a 阅读全文
posted @ 2020-06-16 16:24 PYWBKTDA 阅读(172) 评论(0) 推荐(0) 编辑
摘要:根据[WC2011]XOR的思路,每次暴力重构线性基,令l=l2w,则有一个nql的做法(这里线性基位数很多,所以要用bitset) 由于初始连通,因此每一个环一定可以由若干个[树边+1条非树边]的环构成(构成指异或),那么预处理出每一个操作的环大小,相当于维 阅读全文
posted @ 2020-06-14 22:20 PYWBKTDA 阅读(230) 评论(0) 推荐(0) 编辑
摘要:容易想到树套树,但数据范围太大,会超时 考虑平衡树的作用,就是将这个区间内的所有数排序,所以可以离线+归并来处理,预处理复杂度o(nlogn),然后考虑维护:1.删除;2.询问 删除操作维护可以使用并查集,可以通过α(n)的时间里快速找到每一个点的上和下元素 询问操作可以二分查 阅读全文
posted @ 2020-06-10 22:02 PYWBKTDA 阅读(101) 评论(0) 推荐(0) 编辑
摘要:以统计x坐标的数量为例:x为下标建一棵线段树,然后对每一个区间按照y坐标建一棵可持久化线段树(每一个x只保留最大的一个y),询问时,二分找到这个区间内最大的y以前的点并统计,复杂度为o(nlog2n) 还有一种做法是bitset+分块,预处理出:1.第i个块到第j个块的bitdet;2.每 阅读全文
posted @ 2020-06-10 14:13 PYWBKTDA 阅读(190) 评论(0) 推荐(0) 编辑
摘要:枚举T中失配的位置i,容易发现能够成立当且仅当存在一个以T[0,i)为后缀的前缀S[0,a)T(i,|T|)S(a,|S|)的一个前缀 考虑建立S的正序和倒序的两个后缀自动机,设T[0,i)对应点x(正序自动机中),T(i,|T|)对应点y(倒序自动机中),那么必然有$a 阅读全文
posted @ 2020-06-09 17:49 PYWBKTDA 阅读(151) 评论(0) 推荐(1) 编辑
摘要:先离散,然后将黑的看成1,白的看成-1,对整个序列差分,所有区间建为(l,r+1)的无向边,并标上-1和1,每一个点的前缀和即为该点的值 考虑什么情况下能够使得所有点都是0:当且仅当每一个点的度数都为偶数(证明:必要性,由于所有点奇偶性相同,因此比然要有偶数条边;必要性:每一个连通块都存在一个欧 阅读全文
posted @ 2020-06-08 19:42 PYWBKTDA 阅读(242) 评论(0) 推荐(0) 编辑
摘要:首先注意题目中的一些细节问题:1.同一个区间不能累加;2.每一种寿司才能提供x的代价;3.每一种代号的寿司才能贡献mx2的代价 这些就很好的为最小割提供了条件,考虑最大权闭合子图的建图: 1.(S,id(i,j),d[i][j])(d[i][j]0),$(id(i,j),T 阅读全文
posted @ 2020-06-04 21:20 PYWBKTDA 阅读(154) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示