#P16726. [GKS 2019 #B] Building Palindromes

    ID: 19058 远端评测题 3000ms 1024MiB 尝试: 0 已通过: 0 显示难度普及 上传者: 标签>2019前缀和位运算Google Kick Start

[GKS 2019 #B] Building Palindromes

题目描述

Anna 有一排 NN 个积木,每个积木上恰好写有一个从 A 到 Z 的字母。积木从左到右编号为 1,2,…,N1, 2, \dots, N。

今天,她在学习回文。回文是指正着读和反着读都相同的字符串。例如,ANNA、RACECAR、AAA 和 X 都是回文,而 AB、FROG 和 YOYO 则不是。

Bob 想测试 Anna 对回文的理解程度,他会问她 QQ 个问题。第 ii 个问题是:Anna 能否使用编号从 LiL_i 到 RiR_i(包含两端)的所有积木,在必要时重新排列它们,形成一个回文?在每个问题之后,Anna 会将积木放回原来的位置。

请帮助 Anna 找出她能够回答“是”的问题有多少个。

输入格式

输入的第一行给出测试用例的数量 TT。接下来有 TT 个测试用例。每个测试用例的第一行包含两个整数 NN 和 QQ,分别表示积木的数量和问题的数量。随后一行包含一个由 NN 个大写字母(A 到 Z)组成的字符串。接着有 QQ 行,第 ii 行包含两个整数 LiL_i 和 RiR_i,描述第 ii 个问题。

输出格式

对于每个测试用例,输出一行,格式为 Case #x: y,其中 xx 是测试用例编号(从 11 开始),yy 是 Anna 能够回答“是”的问题个数。

2
7 5
ABAACCA
3 6
4 4
2 5
6 7
3 7
3 5
XYZ
1 3
1 3
1 3
1 3
1 3
Case #1: 3
Case #2: 0

提示

在样例 #1 中,N=7N = 7,Q=5Q = 5。

  • 对于第一个问题,Anna 必须使用积木 AACC。她可以将这些积木重新排列成回文 ACCA(或 CAAC)。
  • 对于第二个问题,Anna 必须使用积木 A。这本身已经是回文,因此她不需要重新排列。
  • 对于第三个问题,Anna 必须使用积木 BAAC。这些积木无法重新排列成回文。
  • 对于第四个问题,Anna 必须使用积木 CA。这些积木无法重新排列成回文。
  • 对于第五个问题,Anna 必须使用积木 AACCA。她可以将这些积木重新排列成回文 ACACA(或 CAAAC)。

总共,她能够对 Bob 的 33 个问题回答“是”,因此答案为 33。

在样例 #2 中,N=3N = 3,Q=5Q = 5。对于第一个问题,Anna 必须使用积木 XYZ 来构造回文,这是不可能的,并且其余问题与第一个相同,因此答案为 00。

限制条件

1≤T≤1001 \le T \le 100。

1≤Li≤Ri≤N1 \le L_i \le R_i \le N。

测试集 1(可见)

1≤N≤201 \le N \le 20。

1≤Q≤201 \le Q \le 20。

测试集 2(隐藏)

1≤N≤1051 \le N \le 10^5。

1≤Q≤1051 \le Q \le 10^5。

翻译由 DeepSeek V4 Pro 完成