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

三元组移除

3

题目描述

Y 同学定义了一种在 01 序列上的“三元组移除”操作。

给定一个长度为 mm 的 01 序列 B={b1,b2,,bm}B = \{b_1, b_2, \dots, b_m\},一次操作流程如下:

  1. 选择三个下标 i,j,ki, j, k,满足 1i<j<km1 \le i < j < k \le mbi=bj=bkb_i = b_j = b_k
  2. 将这三个元素从序列中移除,其余元素拼接起来形成新序列。
  3. 这次操作产生 min(kj,ji)\min(k-j, j-i) 的代价。

一个 01 序列的总代价,被定义为通过一系列“三元组移除”操作将其变为空序列,所需支付的最小代价之和。如果一个序列无论如何都无法被清空,则其总代价为 1-1

现在,你得到了一个长度为 NN 的初始 01 序列 AA。你需要回答 QQ 次独立的查询。每次查询给定一个区间 [l,r][l, r],你需要计算子序列 A[l..r]A[l..r] 的总代价。

输入格式

第一行输入一个整数 TcaseT_{case},表示测试数据的组数。

对于每组测试数据: 第一行包含两个整数 NNQQ。 第二行包含 NN 个整数(0011),表示序列 AA。 接下来的 QQ 行,每行包含两个整数 li,ril_i, r_i,描述一次查询。

输出格式

对于每次查询,输出一行一个整数,表示对应子序列的总代价。

样例

样例输入 #1

2
12 4
0 0 1 1 0 1 0 1 0 1 1 0
1 12
2 7
5 10
6 11
6 3
0 0 0 1 1 1
1 3
4 6
1 6

样例输出 #1

4
2
3
-1
1
1
2

数据范围与约定

对于 100%100\% 的数据,保证:

  • 1Tcase1041 \le T_{case} \le 10^4
  • 1N,Q250,0001 \le N, Q \le 250,000
  • ai{0,1}a_i \in \{0, 1\}
  • 1liriN1 \le l_i \le r_i \le N
  • 所有测试用例的 NN 之和不超过 250,000250,000
  • 所有测试用例的 QQ 之和不超过 250,000250,000

「果壳杯」 ROUND 24 (Div. 5)

未参加
状态
已结束
规则
IOI
题目
5
开始于
2025-10-17 18:00
结束于
2025-10-24 18:00
持续时间
2 小时
主持人
参赛人数
22