CF1562D1 Two Hundred Twenty One (easy version)

题目描述

这是该问题的简单版本。不同之处在于,简单版本不要求你输出需要移除的杆的编号。只有在所有版本的问题都被解决时,你才能进行 hack。 Stitch 喜欢和他的朋友 Sparky 一起用不同的机器做实验。今天他们又造了一台新机器。 这台机器的主要部件是 $n$ 根沿一条直线排列、编号从 $1$ 到 $n$ 的杆。每根杆必须带有一个电荷,电荷的数值只能是 $1$ 或 $-1$(否则机器无法工作)。机器能正常工作的另一个条件是所有杆的带电量的变号和必须为零。 更正式地说,这些杆可以表示为一个长度为 $n$ 的数组,每个元素为 $1$ 或 $-1$,表示电荷。需要满足的条件是:$a_1 - a_2 + a_3 - a_4 + \ldots = 0$,即 $\sum\limits_{i=1}^n (-1)^{i-1} \cdot a_i = 0$。 Sparky 给所有 $n$ 根杆充上了电,但不幸的是,杆的电荷并没有被正确设置(变号和不为零)。于是他们决定只保留部分杆。Sparky 有 $q$ 个问题。在第 $i$ 个问题中,Sparky 询问:如果机器只包含编号从 $l_i$ 到 $r_i$ 的杆,最少需要移除多少根杆,才能使剩下的杆的变号和为零?如果变号和已经为零,则无需移除任何杆。 如果杆的数量为零,我们认为变号和为零,也就是说,你总可以移除所有的杆。 请帮助你的朋友们,回答 Sparky 的所有问题!

输入格式

每个测试包含多个测试用例。 第一行包含一个正整数 $t$($1 \le t \le 10^3$),表示测试用例的数量。接下来是每个测试用例的描述。 每个测试用例的第一行包含两个正整数 $n$ 和 $q$($1 \le n, q \le 3 \cdot 10^5$),分别表示杆的数量和问题的数量。 第二行包含一个长度为 $n$ 的非空字符串 $s$,如果 $s_i$ 是 "+",则第 $i$ 根杆的电荷为 $1$,如果 $s_i$ 是 "-",则为 $-1$。 接下来的 $q$ 行,每行包含两个正整数 $l_i$ 和 $r_i$($1 \le l_i \le r_i \le n$),描述 Sparky 的问题。 保证所有测试用例中 $n$ 的总和不超过 $3 \cdot 10^5$,$q$ 的总和也不超过 $3 \cdot 10^5$。

输出格式

对于每个测试用例的每个问题,输出一个整数,表示最少需要移除的杆的数量。

说明/提示

在第一个测试用例的第一个询问中,你可以移除编号为 $5$ 和 $8$ 的杆,剩下的杆为:+--+--++-++-。可以很容易地看出,这时变号和为零。 在第二个测试用例中: - 对于第一个询问,可以移除编号为 $1$ 和 $11$ 的杆,剩下的杆为:--++---++---。可以很容易地看出,这时变号和为零。 - 对于第二个询问,可以移除编号为 $9$ 的杆,剩下的杆为:---++-。可以很容易地看出,这时变号和为零。 - 对于第三个询问,可以不移除任何杆。 由 ChatGPT 4.1 翻译