CF1672H Zigu Zagu

题目描述

你有一个长度为 $n$ 的二进制串 $a$。 现在给出 $q$ 次询问,每次询问给出两个数 $l,r$,保证 $1 \leq l \leq r \leq n$。 令 $s=a[l,r]$,你可以对 $s$ 做如下操作: 1.选择两个数 $x,y$,满足 $1 \leq x \leq y \leq |s|$。令子串 $t=s[x,y]$,对于所有的 $1 \leq i \leq |t|-1$,需要满足 $t_i \neq t_{i+1}$,操作才是合法的,否则是不合法的。注意 $x=y$ 时永远是合法的。 2.从 $s$ 中删除 $s[x,y]$。 对于每一个询问,请求出最少需要多少个操作才能把 $s$ 变成一个空串。 标记提示:$s[l,r]$ 表示从 $l$ 开始,到 $r$ 结束的子串。

输入格式

第一行输入两个正整数 $n,q$ $(1\leq n,q \leq 2\times 10^5)$。 第二行,输入二进制串 $a$。 接下来的 $q$ 行,每行两个整数 $l,r$ 。

输出格式

对于每一个询问,输出一个正整数表示结果。

说明/提示

在第一个测试用例中, 1. 子串为 $\texttt{101}$,因此我们可以通过一次操作使其变为空。 2. 子串为 $\texttt{11011}$,我们可以对 $s[2, 4]$ 进行一次操作得到 $\texttt{11}$,再通过两次操作使其变为空。 3. 子串为 $\texttt{011}$,我们可以对 $s[1, 2]$ 进行一次操作得到 $\texttt{1}$,再通过一次操作使其变为空。