CF1943B.Non-Palindromic Substring

普及+/提高

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

如果一个字符串 tt 存在至少一个长度为 kk 的子串 †^\dagger 不是回文串 ‡^\ddagger,则称 tt 是 kk-good 的。令 f(t)f(t) 表示所有使得字符串 tt 是 kk-good 的 kk 的和。

给定一个长度为 nn 的字符串 ss,你需要回答 qq 个如下的查询:

  • 给定 ll 和 rr(l<rl < r),求 f(slsl+1…sr)f(s_ls_{l + 1}\ldots s_r) 的值。

†^\dagger 字符串 zz 的子串是 zz 中一段连续的字符。例如,"defor"、"code" 和 "o" 都是 "codeforces" 的子串,而 "codes" 和 "aaa" 不是。

‡^\ddagger 回文串是指正着读和反着读都相同的字符串。例如,"z"、"aa" 和 "tacocat" 是回文串,而 "codeforces" 和 "ab" 不是。

输入格式

每组测试数据包含多组测试用例。第一行包含一个整数 tt(1≤t≤2⋅1041 \leq t \leq 2 \cdot 10^4)——表示测试用例的数量。每组测试用例的描述如下。

每组测试用例的第一行包含两个整数 nn 和 qq(2≤n≤2⋅105,1≤q≤2⋅1052 \le n \le 2 \cdot 10^5, 1 \le q \le 2 \cdot 10^5),分别表示字符串的长度和查询的数量。

第二行包含一个字符串 ss。保证字符串 ss 只包含小写英文字母。

接下来的 qq 行,每行包含两个整数 ll 和 rr(1≤l<r≤n1 \le l < r \le n)。

保证所有测试用例中 nn 的总和和 qq 的总和都不超过 2⋅1052 \cdot 10^5。

输出格式

对于每个查询,输出 f(slsl+1…sr)f(s_ls_{l + 1}\ldots s_r) 的值。

输入输出样例

  • 输入#1

    5
    4 4
    aaab
    1 4
    1 3
    3 4
    2 4
    3 2
    abc
    1 3
    1 2
    5 4
    pqpcc
    1 5
    4 5
    1 3
    2 4
    2 1
    aa
    1 2
    12 1
    steponnopets
    1 12

    输出#1

    9
    0
    2
    5
    5
    2
    14
    0
    2
    5
    0
    65

说明/提示

在第一个测试用例的第一个查询中,字符串为 aaab\mathtt{aaab}。aaab\mathtt{aaab}、aab\mathtt{aab} 和 ab\mathtt{ab} 都是非回文子串,它们的长度分别为 44、33 和 22。因此,该字符串是 22-good、33-good 和 44-good。所以 f(aaab)=2+3+4=9f(\mathtt{aaab}) = 2 + 3 + 4 = 9。

在第一个测试用例的第二个查询中,字符串为 aaa\mathtt{aaa}。没有非回文子串,因此 f(aaa)=0f(\mathtt{aaa}) = 0。

在第二个测试用例的第一个查询中,字符串为 abc\mathtt{abc}。ab\mathtt{ab}、bc\mathtt{bc} 和 abc\mathtt{abc} 都是非回文子串,它们的长度分别为 22、22 和 33。因此,该字符串是 22-good 和 33-good。所以 f(abc)=2+3=5f(\mathtt{abc}) = 2 + 3 = 5。注意,虽然长度为 22 的非回文子串有两个,但只计一次。

由 ChatGPT 4.1 翻译

输入解题思路,AI测评打分。不知道怎么写?

首页