CF1679E.Typical Party in Dorm
提高+/省选-
通过率:0%
时间限制:2.00s
内存限制:256MB
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
Today is a holiday in the residence hall — Oleh arrived, in honor of which the girls gave him a string. Oleh liked the gift a lot, so he immediately thought up and offered you, his best friend, the following problem.
You are given a string s of length n, which consists of the first 17 lowercase Latin letters {a, b, c, …, p, q} and question marks. And q queries. Each query is defined by a set of pairwise distinct lowercase first 17 letters of the Latin alphabet, which can be used to replace the question marks in the string s.
The answer to the query is the sum of the number of distinct substrings that are palindromes over all strings that can be obtained from the original string s by replacing question marks with available characters. The answer must be calculated modulo 998244353.
Pay attention! Two substrings are different when their start and end positions in the string are different. So, the number of different substrings that are palindromes for the string aba will be 4: a, b, a, aba.
Consider examples of replacing question marks with letters. For example, from the string aba??ee when querying {a, b} you can get the strings ababaee or abaaaee but you cannot get the strings pizza, abaee, abacaba, aba?fee, aba47ee, or abatree.
Recall that a palindrome is a string that reads the same from left to right as from right to left.
今天是宿舍楼的假日——奥列赫到访,为此女生们送给他一根字符串。奥列赫非常喜欢这份礼物,于是立刻构思出一道题目,并向他最好的朋友(也就是你)提出。
给定一个长度为 n 的字符串 s,该字符串仅由前 17 个小写拉丁字母 {a,b,c,…,p,q} 和问号组成;另有 q 个查询。每个查询由一个互不相同的、属于前 17 个小写拉丁字母的字符集合定义,该集合中的字符可用于替换字符串 s 中的问号。
查询的答案为:对所有将 s 中问号替换成所允许字符后所能得到的字符串,分别计算其回文子串的不同数量,再将这些数量求和。结果需对 998244353 取模。
请注意!当两个子串在原字符串中的起始位置与结束位置不同时,即视为不同的子串。因此,字符串 aba 的不同回文子串数量为 4:a、b、a、aba。
下面给出问号替换的示例:例如,对字符串 aba??ee 和查询集合 {a,b},可得到字符串 ababaee 或 abaaaee,但不能得到 pizza、abaee、abacaba、aba?fee、aba47ee 或 abatree 等字符串。
回顾定义:回文串是指正读与反读均完全相同的字符串。
输入格式
The first line contains a single integer n (1≤n≤1000) — the length of the string s.
The second line contains the string s, which consists of n lowercase Latin letters and question marks. It is guaranteed that all letters in the string belong to the set {a, b, c, …, p, q}.
The third line contains a single integer q (1≤q≤2⋅105) — the number of queries.
This is followed by q lines, each containing a single line t — a set of characters that can replace question marks (1≤∣t∣≤17). It is guaranteed that all letters in the string belong to the set {a, b, c, …, p, q} and occur at most once.
第一行包含一个整数 n(1≤n≤1000)—— 字符串 s 的长度。
第二行包含字符串 s,该字符串由 n 个小写拉丁字母和问号组成。保证字符串中所有字母均属于集合 {a, b, c, …, p, q}。
第三行包含一个整数 q(1≤q≤2⋅105)—— 查询次数。
接下来是 q 行,每行包含一个字符串 t —— 可用于替换问号的字符集合(1≤∣t∣≤17)。保证字符串 t 中所有字母均属于集合 {a, b, c, …, p, q},且每个字母至多出现一次。
输出格式
For each query print one number — the total numbers of palindromic substrings in all strings that can be obtained from the string s, modulo 998244353.
对于每个查询,输出一个数字——所有能从字符串 s 得到的字符串中回文子串的总数,对 998244353 取模。
输入输出样例
输入#1
7 ab??aba 8 a b ab abc abcd abcde abcdef abcdefg
输出#1
14 13 55 105 171 253 351 465
输入#2
11 ??????????? 6 abcdefghijklmnopq ecpnkhbmlidgfjao olehfan codef glhf q
输出#2
900057460 712815817 839861037 756843750 70840320 66
说明/提示
Consider the first example and the first query in it. We can get only one string as a result of replacing the question marks — abaaaba. It has the following palindrome substrings:
- a — substring [1; 1].
- b — substring [2; 2].
- a — substring [3; 3].
- a — substring [4; 4].
- a — substring [5; 5].
- b — substring [6; 6].
- a — substring [7; 7].
- aa — substring [3; 4].
- aa — substring [4; 5].
- aba — substring [1; 3].
- aaa — substring [3; 5].
- aba — substring [5; 7].
- baaab — substring [2; 6].
- abaaaba — substring [1; 7].
In the third request, we get 4 lines: abaaaba, abababa, abbaaba, abbbaba.
考虑第一个样例及其第一个查询。我们仅能通过替换问号得到一个字符串——abaaaba。该字符串包含以下回文子串:
a— 子串 [1; 1]。b— 子串 [2; 2]。a— 子串 [3; 3]。a— 子串 [4; 4]。a— 子串 [5; 5]。b— 子串 [6; 6]。a— 子串 [7; 7]。aa— 子串 [3; 4]。aa— 子串 [4; 5]。aba— 子串 [1; 3]。aaa— 子串 [3; 5]。aba— 子串 [5; 7]。baaab— 子串 [2; 6]。abaaaba— 子串 [1; 7]。
在第三次查询中,我们得到 4 行:abaaaba、abababa、abbaaba、abbbaba。
输入解题思路,AI测评打分。不知道怎么写?