摘要:
用set维护每个联通块里的最值,multiset维护所有块里的最值,并查集维护连通性,然后随便搞搞就行了,合并时候采用启发式合并。复杂度O(nlognlogn),大概勉强过的程度,反正跑的很慢就是了。 代码 阅读全文
摘要:
随机乱搞,调调参数勉强过 代码 阅读全文
摘要:
用数组表示两个栈,将两个栈的栈顶并在一起,用树状数组维护一下操作即可。 代码 阅读全文
摘要:
线段树,记录next[i]下一部与当前电影一样的位置,然后枚举区间左端点i,询问线段树最大值后删除i到next[i-1]这段区间的观影值,且增加next[i]到next[next[i]]-1这段区间的观影值。 代码,跑的有点慢 阅读全文
摘要:
乱搞,处理出这三样东西,[1,i]所包含的逆序对数cnt[i],区间[1,i]对于区间[j*sqrt(n),(j+1)*sqrt(n)]的逆序对数sum[j][i],以及倒序将每个元素插入主席树,那么询问[l,r]的答案就为[1,r]的逆序对数减去[1,l-1]的逆序对数减去(A,B)(A∈[1,l 阅读全文
摘要:
树分块,每个点如果其父亲的块还未满,则并入,否则自己新建一个块,询问时完整包含于一个子树的块二分,不完整包含的块直接暴力找。 代码 阅读全文
摘要:
树链剖分,线段树维护三个值:区间颜色数、区间左端颜色、区间右端颜色,当左区间右端颜色=右区间左端颜色时候,总颜色-1,树上的维护类似。 代码 阅读全文
摘要:
dp,时间复杂度O(n^3),f[i][j][k]表示a串到i,b串到j的时候,匹配了c串的k位,要用滚动数组 代码 阅读全文
摘要:
首先记录每个点原来的数字V、最小的变化L,最大的变化R,在子序列中两个点i,j(i<j)如果相邻,应满足A[I]<=L[J] && R[I]<=A[J],然后就维护一下这个东西,有点类似二维最长不降子序列,可以用cdq分治做,复杂度O(nlognlogn)。 代码 阅读全文