#D. 字符替换(replace)

    Type: Default File IO: replace 3000ms 128MiB

字符替换(replace)

You cannot submit for this problem because the contest is ended. You can click "Open in Problem Set" to view this problem in normal mode.

T4 字符替换(replace)

题目描述

给定一个仅包含 012abc? 的字符串,你需要将字符串中的每个 ? 分别替换成 012 之一,将字符串中的每个 a 分别替换成 01 之一,将字符串中的每个 b 分别替换成 02 之一,将字符串中的每个 c 分别替换成 12 之一。也就是说替换成一个 012012 字符串。特别地,如果字符串中不包含 ?,应将其自身视为唯一的替换方案。

求有多少种替换方案,使得替换后的字符串满足:恰好拥有奇数个“好的”非空子串。“好的”的定义为其本质不同的子序列(包含空集)个数为奇数。

每个数据点会给定一个字符串 ss ,然后每次对 ss 的一个子串进行询问,答案对 998244353998244353 取模。

输入格式

第一行一个整数 nn

第二行一个长为 nn 的字符串 ss,仅包含 012abc?

第三行一个整数 mm 表示询问次数。

接下来 mm 行,每行两个整数 l,rl,r 表示对子串 sl,rs_{l,r} 进行一次询问。

输出格式

mm 行,每行一个正整数表示答案,对 998244353998244353 取模。

样例1

样例输入

5
100a1
5
1 5
1 4
2 5
3 4
1 3

样例输出

1
0
1
1
1

样例解释

对于【样例#1】的第一个询问 1 5,有 22 种替换方案,分别为字符串 1000110011

其中 1000133 个子串为好的,满足不同的子序列的个数为奇数:10001,拥有 1515 个不同的子序列;s2,3s'_ {2,3}s3,4s'_ {3,4} 均为 00,都拥有 33 个不同的子序列。

10011 则拥有 44 个子串为好的,满足不同的子序列的个数为奇数,分别为 100100001111

10001 有奇数个好的子串,因此计入答案;而 10011 有偶数个好的子串,因此不计入答案。

样例2

样例输入

20
1110aa01001010a1a110
20
1 20
5 16
11 16
10 13
5 14
13 17
1 18
1 7
6 9
15 19
12 17
17 18
4 11
3 13
13 15
18 19
2 8
7 13
4 15
9 18

样例输出

3
2
2
0
4
2
13
3
0
1
3
1
2
2
2
1
2
1
1
3

样例解释

对于【样例#2】的第一个询问 1 20s1,20s_{1,20}44a,因此有 24=162^4=16 种替换方案。

样例3

样例输入

10
a11bcabab2
10
7 8
2 8
5 8
3 9
4 8
6 6
1 10
3 7
2 4
1 4

样例输出

1
26
9
48
7
0
54
5
2
1

数据范围

测试点编号 n,mn,m\leq 字符集不包含
1 1010
2 5050 ?abc
3 500500
4 50005000
5 5000050000
6 5050 3?bc
7 500500
8 50005000
9~11 5000050000
12 5050
13~14 500500
15~16 50005000
17~18 5000050000
19~20

对于 100%100\% 的数据,满足 1n5×104,1m1061\leq n\leq 5\times10^4,1\leq m\leq10^6

NOIP 模拟赛(七)

Not Attended
Status
Done
Rule
IOI
Problem
4
Start at
2023-11-10 7:30
End at
2023-11-10 12:00
Duration
4.5 hour(s)
Host
Partic.
21