Know your data, and you can break the rules. —— Jon Bentley
一般地,排序的平均复杂度不可能低于 O(nlogn),但通过 D 题和 F 题的学习,我们了解到,在一些特定情况下,我们可以做得更好
没力气编题面了,大概也没有人会做到这题吧?
给定一个长度为 n 的数组 a,仅由 0 和 1 组成,下标 1 起。
现在,对该数组进行 q 次操作,每次操作给定操作数 opr, l, r:
操作一:当 opr = 1 时,排序数组的 [l, r] 区间,使其单增
操作二:当 opr = 2 时,排序数组的 [l, r] 区间,使其单减
每次操作后,输出 \sum_{i = l}^{r}a_i
输入
第一行输入两个正整数 n, q (1 \le n, q \le 10^5),表示数组长度和操作次数
第二行输入一个长度为 n 的 01 串,表示数组 a
接下来 q 行,每行三个由空格分隔的正整数 opr, l, r (opr \in {1, 2};1 \le l \le r \le n)
输出
输出 q 行,每行一个整数,表示每次询问的答案
样例
| 标准输入 复制文本 |
16 10 1001101000101100 2 1 15 1 9 15 2 6 9 2 7 11 2 6 9 2 5 5 2 13 15 2 2 13 2 8 10 1 6 11 |
| 标准输出 复制文本 |
7 0 2 1 2 1 0 6 0 2 |