CF1473D.Program

传统题 时间 2000 ms 内存 256 MiB 9 尝试 18 已通过 3 标签

Program

题目描述

给定一个由 nn 条指令组成的程序。初始时,单个变量 xx 被赋值为 00 。随后,指令有两种类型:

  • xx11
  • xx11

给定 mm 个如下格式的查询:

  • 查询 ll rr —— 如果忽略第 ll 条到第 rr 条(包含两端)之间的所有指令,按顺序执行其余指令,变量 xx 会被赋予多少个不同的值?

输入格式

第一行包含一个整数 tt1t10001 \leq t \leq 1000)—— 测试用例的数量。

接下来是 tt 个测试用例的描述。

每个测试用例的第一行包含两个整数 nnmm1n,m21051 \leq n, m \leq 2 \cdot 10^5)—— 程序中指令的数量和查询的数量。

每个测试用例的第二行包含一个程序 —— 一个由 nn 个字符组成的字符串:每个字符要么是 + 要么是 -,分别表示加一和减一指令。

接下来 mm 行,每行包含两个整数 llrr1lrn1 \leq l \leq r \leq n)—— 查询的描述。

所有测试用例的 nn 之和不超过 21052 \cdot 10^5。所有测试用例的 mm 之和不超过 21052 \cdot 10^5

输出格式

对于每个测试用例,输出 mm 个整数 —— 对于每个查询 llrr,输出忽略第 ll 条到第 rr 条(包含两端)之间的所有指令,按顺序执行其余指令时,变量 xx 被赋予的不同值的数量。

说明/提示

第一个测试用例中每个查询剩余的指令如下:

  1. 空程序 —— xx 只等于 00
  2. - —— xx 的值为 001-1
  3. ---+ —— xx 的值为 001-12-23-32-2 —— 其中有 44 个不同的值;
  4. +--+--+ —— 不同的值为 11001-12-2

样例

2
8 4
-+--+--+
1 8
2 8
2 5
1 1
4 10
+-++
1 1
1 2
2 2
1 3
2 3
3 3
1 4
2 4
3 4
4 4
1
2
4
4
3
3
4
2
3
2
1
2
2
2

在线编程 IDE

建议全屏模式获得最佳体验