QOJ.ac

QOJ

Time Limit: 2 s Memory Limit: 256 MB Total points: 100

#20747. 没时间涂漆

Statistics

Bessie 最近收到了一套绘画工具,她想给牧场一端的长栅栏涂漆。栅栏由 $N$ 段连续的 1 米长的栅栏段组成($1\le N\le 10^5$)。Bessie 有 26 种不同的颜色,她按颜色从浅到深的顺序,用字母 'A' 到 'Z' 标记这些颜色('A' 是很浅的颜色,'Z' 则很深)。因此,她可以用一个长度为 $N$、每个字符都是字母的字符串,表示每段栅栏希望涂成的颜色。

初始时,所有栅栏段都没有颜色。Bessie 可以用一次涂刷,将任意一段连续的栅栏涂成同一种颜色,但她不能在深色上涂浅色(只能在浅色上涂深色)。

例如,初始没有颜色的一段长度为四的栅栏可以这样涂色:

.... -> BBB. -> BBLL -> BQQL

由于时间紧张,Bessie 觉得她可能需要留下一段连续的栅栏不涂色!目前,她正在考虑 $Q$ 个候选区间($1\le Q\le 10^5$),每个区间由两个整数 $(a,b)$ 描述,其中 $1 \leq a \leq b \leq N$,它们给出要保持不涂色的栅栏段区间 $a \ldots b$ 的两端编号。

对于每个候选区间,在保持区间内所有栅栏段都没有颜色的同时,将区间外每段栅栏都涂成其目标颜色,最少需要多少次涂刷?注意,Bessie 在这个过程中并不会真正涂色,因此每个候选区间的答案是独立的。

输入格式

第一行包含 $N$ 和 $Q$。

下一行包含一个长度为 $N$ 的字符串,表示每段栅栏的目标颜色。

接下来 $Q$ 行,每行包含两个用空格分隔的整数 $a$ 和 $b$,表示一个可能保持不涂色的候选区间。

输出格式

对于 $Q$ 个候选区间中的每一个,在新的一行输出答案。

样例

输入格式 1

8 2
ABBAABCB
3 6
1 4

输出格式 1

4
3

说明

在这个样例中,排除目标图案为 $\texttt{BAAB}$ 的子区间后,需要四次涂刷完成涂色;排除 $\texttt{ABBA}$ 则只需要三次。

.... -> AA.. -> ABBB -> ABCB

子任务

  • 测试点 1–4 满足 $N,Q\le 100$。
  • 测试点 5–7 满足 $N,Q\le 5000$。
  • 测试点 8–13 没有额外限制。

题目作者:Andi Qu 和 Brian Dean

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.