問題一覧 >
通常問題
No.2720 Sum of Subarray of Subsequence of...
問題文最終更新日: 2024-03-25 19:32:51
問題文
長さ N の数列 A=(A1,A2,…,AN) と,a
,s
のみからなる長さ M の文字列 S が与えられます.S の左から i 番目の文字を Si と表します.
与えられた数列に対して整数を返す関数 f0,…,fM を以下のように定めます:
- 数列 B に対し,f0(B) を B の要素の総和とする.
- 1≤i≤M を満たす i と数列 B に対し,
- Si=
a
のとき,fi(B) を B の空でない連続部分列 C 全てをわたる fi−1(C) の総和とする.
- Si=
s
のとき,fi(B) を B の空でない(連続とは限らない)部分列 C 全てをわたる fi−1(C) の総和とする.
fM(A) を求めてください.答えは非常に大きくなることがあるので,答えを 998244353 で割った余りを出力してください.
ただし部分列,連続部分列ともに,数列として等しい場合でも選んだ要素の添字の集合が異なれば区別します.
制約
- 1≤N≤105
- 1≤M≤105
- 0≤Ai<998244353
- S は
a
,s
のみからなる長さ M の文字列
- 入力される数値は全て整数
入力
入力は以下の形式で標準入力から与えられます.
N M
A1 … AN
S
出力
答えを 998244353 で割った余りを出力してください.
最後に改行してください.
サンプル
サンプル1
入力
3 2
1 2 3
as
出力
50
S2= s
なので f2(A) は A の空でない部分列 B 全てをわたる f1(B) の総和となり,
f2(A)=f1((1,2,3))+f1((1,2))+f1((1,3))+f1((2,3))+f1((1))+f1((2))+f1((3))
です.S1= a
なので f1(B) は B の空でない連続部分列 C 全てをわたる f0(C)=(Cの要素の総和) の総和となり,各項の値は
- f1((1,2,3))=f0((1,2,3))+f0((1,2))+f0((2,3))+f0((1))+f0((2))+f0((3))=6+3+5+1+2+3=20
- f1((1,2))=f0((1,2))+f0((1))+f0((2))=3+1+2=6
- f1((1,3))=f0((1,3))+f0((1))+f0((3))=4+1+3=8
- f1((2,3))=f0((2,3))+f0((2))+f0((3))=5+2+3=10
- f1((1))=f0((1))=1
- f1((2))=f0((2))=2
- f1((3))=f0((3))=3
と計算できます.以上より
f2(A)=20+6+8+10+1+2+3=50
となります.
サンプル2
入力
10 7
3 1 4 1 5 9 2 6 5 3
assasas
出力
671269716
998244353 で割った余りを出力してください.
提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。