CF1672H.Zigu Zagu
省选/NOI-
通过率:0%
时间限制:1.00s
内存限制:256MB
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
You have a binary string a of length n consisting only of digits 0 and 1.
You are given q queries. In the i-th query, you are given two indices l and r such that 1≤l≤r≤n.
Let s=a[l,r]. You are allowed to do the following operation on s:
- Choose two indices x and y such that 1≤x≤y≤∣s∣. Let t be the substring t=s[x,y]. Then for all 1≤i≤∣t∣−1, the condition ti=ti+1 has to hold. Note that x=y is always a valid substring.
- Delete the substring s[x,y] from s.
For each of the q queries, find the minimum number of operations needed to make s an empty string.
Note that for a string s, s[l,r] denotes the subsegment sl,sl+1,…,sr.
你有一个长度为 n 的二进制字符串 a,仅由数字 0 和 1 组成。
你将收到 q 个查询。在第 i 个查询中,你将得到两个下标 l 和 r,满足 1≤l≤r≤n。
令 s=a[l,r]。你被允许对 s 执行以下操作:
- 选择两个下标 x 和 y,满足 1≤x≤y≤∣s∣。令 t 为子串 t=s[x,y]。则对所有 1≤i≤∣t∣−1,必须满足 ti=ti+1。注意:x=y 总是合法的子串。
- 将子串 s[x,y] 从 s 中删除。
对每个查询,求出使 s 变为空字符串所需的最少操作次数。
注意:对于字符串 s,s[l,r] 表示子段 sl,sl+1,…,sr。
输入格式
The first line contains two integers n and q (1≤n,q≤2⋅105) — the length of the binary string a and the number of queries respectively.
The second line contains a binary string a of length n (ai∈0,1).
Each of the next q lines contains two integers l and r (1≤l≤r≤n) — representing the substring of each query.
第一行包含两个整数 n 和 q(1≤n,q≤2⋅105)—— 分别表示二进制字符串 a 的长度以及查询次数。
第二行包含一个长度为 n 的二进制字符串 a(其中 ai∈{0,1})。
接下来的 q 行,每行包含两个整数 l 和 r(1≤l≤r≤n)—— 表示每次查询所对应的子串范围。
输出格式
Print q lines, the i-th line representing the minimum number of operations needed for the i-th query.
输出 q 行,其中第 i 行表示第 i 个查询所需的最少操作次数。
输入输出样例
输入#1
5 3 11011 2 4 1 5 3 5
输出#1
1 3 2
输入#2
10 3 1001110110 1 10 2 5 5 10
输出#2
4 2 3
说明/提示
In the first test case,
- The substring is 101, so we can do one operation to make the substring empty.
- The substring is 11011, so we can do one operation on s[2,4] to make 11, then use two more operations to make the substring empty.
- The substring is 011, so we can do one operation on s[1,2] to make 1, then use one more operation to make the substring empty.
在第一个测试用例中:
- 子串为 101,因此我们可以执行一次操作使该子串变为空。
- 子串为 11011,因此我们可以对 s[2,4] 执行一次操作得到 11,再执行两次操作使该子串变为空。
- 子串为 011,因此我们可以对 s[1,2] 执行一次操作得到 1,再执行一次操作使该子串变为空。
输入解题思路,AI测评打分。不知道怎么写?