摘要: 和区间众数几乎一模一样的套路。 阅读全文
posted @ 2018-07-29 22:08 Gloid 阅读(164) 评论(0) 推荐(0) 编辑
摘要: 区间众数。分块,预处理任意两块间所有数的众数,和每块中所有数的出现次数的前缀和。查询时对不是整块的部分暴力,显然只有这里出现的数可能更新答案。于是可以优美地做到O(n√n)。 阅读全文
posted @ 2018-07-29 21:40 Gloid 阅读(151) 评论(0) 推荐(0) 编辑
摘要: 一个很显然的思路是把边按时间段拆开线段树分治一下,用lct维护MST。理论上复杂度是O((M+Q)logNlogQ),实际常数爆炸T成狗。正解写不动了。 阅读全文
posted @ 2018-07-29 20:15 Gloid 阅读(276) 评论(0) 推荐(0) 编辑
摘要: 发现所谓半连通子图就是缩点后的一条链之后就是个模板题了。注意缩点后的重边。写了1h+真是没什么救了。 阅读全文
posted @ 2018-07-29 16:37 Gloid 阅读(230) 评论(0) 推荐(0) 编辑
摘要: 易知所求的是两棵子树大小的乘积。先建出最后所得到的树,求出dfs序和子树大小。之后考虑如何在动态加边过程中维护子树大小。这个可以用树剖比较简单的实现,但还有一种更快更优美的做法就是线段树合并。对每个点开权值线段树,维护当前时刻这棵点为根的子树中,已经和其相连的点的dfs序情况。合并时直接将表示两棵子 阅读全文
posted @ 2018-07-29 15:16 Gloid 阅读(194) 评论(0) 推荐(0) 编辑
摘要: 显然子树内的操作不会对子树外产生影响。于是贪心,若交换之后子树内逆序对减少就交换。 这个东西可以用权值线段树计算。操作完毕后需要对两棵权值线段树合并,这个的复杂度是两棵线段树的重复节点个数。那么总复杂度不太显然的是O(nlogn)。因为相当于把n个只有一个叶子的线段树合并在一起。 阅读全文
posted @ 2018-07-29 12:05 Gloid 阅读(179) 评论(0) 推荐(0) 编辑
摘要: 构造线性基后将其消至对任意位至多只有一个元素该位为1。于是就可以贪心了,将k拆成二进制就好。注意check一下是否能异或出0。 阅读全文
posted @ 2018-07-29 00:25 Gloid 阅读(345) 评论(0) 推荐(0) 编辑