摘要: "传送门" 感觉要死在$Splay$里了 orz 这题用$Splay$维护这个序列,其中的第$k$大点代表这个序列的第$k$个数 第一个操作,先把那个数所在的点旋到根,然后把整个根的左子树接到右子树中最小的点,记得$splay$维护整棵树 第二个操作类似,把第一个操作反过来就行 第三个本质是两个相邻 阅读全文
posted @ 2018-12-03 22:22 ✡smy✡ 阅读(128) 评论(0) 推荐(0) 编辑
摘要: "传送门" 毒瘤lxl 本质是莫队,关键是怎么处理询问 这里需要开两个bitset(记为$b1,b2$),分别存$x$和$n x$是否出现 对于询问1,即$x y=z$,由于$y=x z$,所以要求$x$和$x z$同时存在,相当于$b1\&(b1 (n z))$是否有1 询问3的话,$O(\sqr 阅读全文
posted @ 2018-12-03 17:04 ✡smy✡ 阅读(155) 评论(0) 推荐(0) 编辑
摘要: "传送门" 同样是树上莫队 只不过要求一个集合的mex,这里可以使用分块,可以在根号时间内得出解 cpp / Problem: 4129 User: star_magic_young Language: C++ Result: Accepted Time:748 ms Memory:8712 kb 阅读全文
posted @ 2018-12-03 16:49 ✡smy✡ 阅读(153) 评论(0) 推荐(0) 编辑
摘要: "传送门" 这种题显然要用树上莫队 何为树上莫队?~~就是在树上跑莫队算法~~就是先把树分块,然后把询问离线,按照左端点所在块为第一关键字,右端点所在块为第二关键字,时间戳(如果有修改操作)为第三关键字排序,然后依次处理.树上莫队要每个点记录是否访问,移动端点时需要把移动前和移动后的点之间的路径上的 阅读全文
posted @ 2018-12-03 16:33 ✡smy✡ 阅读(136) 评论(0) 推荐(0) 编辑
摘要: "传送门" 做法是dfs整棵树,当访问一个点$x$时,先访问儿子,若某个时刻子树大小$\ge b$时,就把那些点放在一个省里,省会记为$x$,访问完儿子再把$x$加入栈.最后栈中剩余的没加入任何省的点加入最后一个省 (这就叫做树分块) 正确性的话,首先前面的省大小$\le 2b$,然后在最后栈中剩余 阅读全文
posted @ 2018-12-03 16:22 ✡smy✡ 阅读(118) 评论(0) 推荐(0) 编辑