摘要: 都是Splay比较常见的操作,平衡树节点维护是一个量:左右儿子,子树大小,节点代表的值(对于非哨兵来说,值等于输入的\(c\);对于哨兵来说,值等于\(0\)),节点代表的副本值(对于非哨兵来说,副本值等于值;对于哨兵来说,副本值等于\(-1001\)),子树代表的区间从左/右开始的最大和,子树代表 阅读全文
posted @ 2024-08-30 21:28 最爱丁珰 阅读(20) 评论(0) 推荐(0)
摘要: 考虑在线维护,显然用并查集。对每一个集合都维护一个Splay(或其他平衡树),然后直接查询就好了;所以现在的任务就是合并两个Splay。如果满足一个Splay的最大值小于另一个Splay的最小值,那么是可以快速合并的;但是这里显然不满足,所以只能用启发式合并,对于较小的Splay,遍历其每个节点,然 阅读全文
posted @ 2024-08-30 10:25 最爱丁珰 阅读(21) 评论(0) 推荐(0)
摘要: 比较显然的一个trick就是像“蚯蚓”这道题目一样,用一个变量\(\text{delta}\)记录整体工资的移动,设平衡树记录的工资为\(x\),则\(x+\text{delta}\)为真实工资(当然Splay也支持区间修改,但是没必要,这里肯定用这个trick) 于是现在只需要解决问题F。即\(x 阅读全文
posted @ 2024-08-30 08:18 最爱丁珰 阅读(20) 评论(0) 推荐(0)