摘要: 题目大意:给定一个长度为 N 的序列,有 M 个点对答案的贡献为 1,其余为 0,现从起点出发,每次只能走 [s,t] 个单位,求从起点走到终点时答案贡献最小是多少。 题解:由于 N 很大,无法直接记录状态。观察发现 M 很小,且 [s,t] 也很小,因此,考虑到只有在答案贡献为 1 的点的 附近 阅读全文
posted @ 2019-03-25 21:07 shellpicker 阅读(167) 评论(0) 推荐(0) 编辑
摘要: 题目大意:维护一个序列,支持区间插入,区间删除,区间翻转,查询区间元素和,查询区间最大子段和操作。 题解:毒瘤题。。。QAQ打完这道题发现自己以前学了一个假的 Splay。。 对于区间操作,用 splay 处理是比较优先的选择。取出一段区间 [l,r] 的方式为:将 l 1 旋转到根节点,将 r+1 阅读全文
posted @ 2019-03-25 20:33 shellpicker 阅读(202) 评论(0) 推荐(0) 编辑
摘要: 题目大意:利用 splay 维护序列,支持区间反转操作。 题解:这里用 splay 维护的是下标的偏序关系,最后查询时也是按照下标从小到大进行查询。注:初始化引入两个极值点的作用是避免考虑 l 1,r+1 越界带来的不必要的麻烦。 代码如下 cpp include using namespace s 阅读全文
posted @ 2019-03-25 12:54 shellpicker 阅读(105) 评论(0) 推荐(0) 编辑
摘要: 题目大意:给定一个长度为 N 的序列,支持区间开根,区间求和。 题解:对于区间开根操作,可以发现任何一个位置的值开根至多 6 次就会变成 1。因此即使是整个区间开根,暴力修改6次后,所有的点的权值均小于等于1,即 $O(6n)$ 时间之后,再修改对序列的值已经不会产生影响,因此忽略后面的开根操作即可 阅读全文
posted @ 2019-03-25 08:54 shellpicker 阅读(189) 评论(0) 推荐(0) 编辑