摘要:
单调队列 反着遍历数组,放进单调队列,每次维护最大值,在维护最大值的时候,队列里是一个递减的序列,也就是正向递增的序列啦~ 注意一开始绝对不要memset一次队列,否则会T的很惨。。别问我为什么知道。。。 阅读全文
摘要:
欧拉回路 最多几笔画完,显然和欧拉回路有关。。 我们可以把所有度数为奇数的点两两配对,最后会形成若干个全是偶数度数的联通块。 显然每个联通块都是欧拉回路。 然后我们dfs这些联通块,跑一次欧拉回路。 用数组模拟的邻接表存图后,首先访问的一定是后加的,我们可以利用这些边来将欧拉回路分段。 includ 阅读全文
摘要:
线段树 a数组一开始全是0,每次增加1,我们可以发现不一定每一个a\[i]/b\[i]都是会影响答案的。 也就是说,只有a\[i] b\[i]才会影响答案,为了方便比较,我们可以把a的初始值变成b,然后每次区间加1相当于区间减1,当有某个数减为0,就代表影响了一次答案,我们可以暴力找到这个数,将他重 阅读全文
摘要:
树状数组 + 莫队 现场赛的时候树套树和主席树都没写出来TAT,比完发现正解是莫队。。 思路比较简洁,化简一下不等式,可以发现对于每个值x,实际上是找\[x k 1...x+k]范围内的数有多少个。 所以我们把所有数统统塞进树状数组,然后莫队暴力找就行啦。 注意一下每一个pair都不能算上自己,所以 阅读全文
摘要:
set维护 预处理很巧妙,对于完全被大范围包含的小范围我们不用考虑,要处理的只有不完全重合的区间。 因为一个区间可能被下一个区间的一部分包含,所以我们所能选择的数是在变化的,用一个集合来维护,每次取最小值即可。 在读入区间范围的时候,可以用pre数组来存每个区间r对应的最大的区间长度的l,然后再反着 阅读全文
摘要:
贪心 时隔一年,开始补多校的题了。。 很巧的一道贪心,在读入的时候就把合法的括号消去,然后对剩下的括号序列排序。 众所周知,不合法的括号序列只有"(((", ")))", ")("这三种,所以我们可以模拟一下这三种情况。 最后可知"((("这种形状应该放前面,")))"这种形状应该后面,最后一种放中 阅读全文
摘要:
区间众数 这题是强制在线的,所以只有分块了,不然的话还可以莫队。。 预处理出每块之间的众数以及每个数出现的位置,查询的时候块内直接查询,不足整块的直接二分l和r,相减就是一个数出现的次数了,然后更新答案即可。 阅读全文
摘要:
分块训练 区间染色,统计等于某种颜色的数量。 这里还是用分块,用一个数组记录块内修改的颜色,这样块内查询就可以O(1)染色了,其他区间暴力统计,修改。 注意的是在暴力统计的时候,先要把染色标记push到区间内。 include define INF 0x3f3f3f3f define full(a, 阅读全文