传统题 2000~2500ms 256MiB

belt

该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。

题目描述

有一条长度为 NN 的传送带,上面排着 NN 个格子。每个格子里只有两种状态之一:01。用字符串 ss 表示当前状态(下标从 00N1N-1)。

你需要处理 QQ 次操作。第 ii 次操作给出两个整数 li,ril_i, r_i0liriN10 \le l_i \le r_i \le N-1),你要把区间 [li,ri][l_i, r_i] 内的每一位都取反:0110

每次操作完成后,构造新串

t="1"+s+"0"t = \texttt{"1"} + s + \texttt{"0"}

(即在 ss 前面加一个 1,后面加一个 0)。

定义函数 g(t)g(t)

  • tt 中存在相邻子串 "10",你可以选择其中任意一个 "10",把它替换成 "01"(相当于把这两个相邻字符交换)。
  • 重复上述操作,直到 tt 中不再出现相邻子串 "10" 为止。
  • g(t)g(t) 的值等于达到这一状态所需的最少替换次数。

你需要在每次区间取反后输出 g(t)g(t)


输入格式

输入共 Q+3Q+3 行:

  1. 第一行一个整数 NN
  2. 第二行一个长度为 NN 的字符串 ss(只含 01)。
  3. 第三行一个整数 QQ
  4. 接下来 QQ 行,每行两个整数 li,ril_i, r_i

输出格式

输出共 QQ 行。第 ii 行输出第 ii 次操作后的 g(t)g(t)


输入输出样例 #1

输入 #1

5
01011
2
1 3
0 2

输出 #1

7
10

输入输出样例 #2

输入 #2

3
000
2
0 0
0 1

输出 #2

6
5

说明/提示

  • 1N2000001 \le N \le 200000
  • 1Q2000001 \le Q \le 200000
  • 字符串 ss 仅由 01 构成
  • 0liriN10 \le l_i \le r_i \le N-1

子任务划分

  • Subtask110):(N,Q2000)Subtask 1(10):(N,Q \le 2000)
  • Subtask215):(N2e5, Q2000)Subtask 2(15):(N\le 2e5,\ Q\le 2000)
  • Subtask315):(N,Q2e5)Subtask 3(15):(N,Q\le 2e5),且所有操作 (li=ri)(l_i=r_i)
  • Subtask415):(N,Q2e5)Subtask 4(15):(N,Q\le 2e5),且所有操作满足 (rili50)(r_i-l_i\le 50)
  • Subtask515):(N5e4, Q2e5)Subtask 5(15):(N\le 5e4,\ Q\le 2e5)
  • Subtask630):(N,Q2e5)Subtask 6(30):(N,Q\le 2e5)(无额外限制)

元旦模拟赛(CSP-S)

未参加
状态
已结束
规则
OI
题目
4
开始于
2026-1-2 14:00
结束于
2026-1-2 17:30
持续时间
3.5 小时
主持人
参赛人数
17