Super Sequence Scoring System

2 secs 1024 MB
yuki4869's icon yuki4869

問題文

整数 MM、長さ NN の整数列 C=(C1,C2,,CN)C=(C_1,C_2,\ldots,C_N)、および M×MM \times M の整数行列 WW が与えられます。各 CiC_i00 以上 M1M-1 以下の整数です。

QQ 個のクエリが与えられるので、順に処理してください。

クエリは以下の 44 種類です。

  • タイプ 111 l r xの形式で与えられる。

    すべての整数 i=l,l+1,,ri=l,l+1,\ldots,r について、CiC_i を次の値に変更する。

    Ci(Ci+x)modMC_i \leftarrow (C_i+x) \bmod M

  • タイプ 222 l rの形式で与えられる。

    次の値を 998244353998244353 で割った余りを出力する。

    li<jrWCi,Cj\displaystyle \sum_{l \leq i < j \leq r} W_{C_i,C_j}

  • タイプ 333 l r xの形式で与えられる。

    すべての整数 i=l,l+1,,ri=l,l+1,\ldots,r について、CiC_i を次の値に変更する。

    Ci(Ci×x)modMC_i \leftarrow (C_i \times x) \bmod M

  • タイプ 444 l r a bの形式で与えられる。

    区間 [l,r][l,r] に含まれる値 aa と値 bb をすべて入れ替える。

    すなわち、次の操作を行う。

Ci{b(Ci=a)a(Ci=b)Ci(Otherwise)C_i \leftarrow \begin{cases} b & (C_i=a) \\ a & (C_i=b) \\ C_i & (Otherwise) \end{cases}

制約

  • 1N2×1051 \leq N \leq 2 \times 10^5
  • 1Q1041 \leq Q \leq 10^4
  • 2M62 \leq M \leq 6
  • 0Ci<M0 \leq C_i < M
  • 0Wi,j<9982443530 \leq W_{i,j} < 998244353
  • 全てのタイプのクエリについて、1lrN1 \leq l \leq r \leq N
  • タイプ 11 のクエリについて、0x<M0 \leq x < M
  • タイプ 33 のクエリについて、0x<M0 \leq x < M
  • タイプ 44 のクエリについて、0a<b<M0 \leq a < b < M
  • 入力はすべて整数である

入力

入力は以下の形式で標準入力から与えられます。

N  MC1  C2  ...  CNW0,0  W0,1  ...  W0,M1W1,0  W1,1  ...  W1,M1...WM1,0  WM1,1  ...  WM1,M1Qquery1query2...queryQN\ \ M\\ C_1\ \ C_2\ \ ...\ \ C_N\\ W_{0,0}\ \ W_{0,1}\ \ ...\ \ W_{0,M-1}\\ W_{1,0}\ \ W_{1,1}\ \ ...\ \ W_{1,M-1}\\ ...\\ W_{M-1,0}\ \ W_{M-1,1}\ \ ...\ \ W_{M-1,M-1}\\ Q\\ query_1\\ query_2\\ ...\\ query_Q

各クエリは、以下のいずれかの形式で与えられます。

1  l  r  x1\ \ l\ \ r\ \ x

2  l  r2\ \ l\ \ r

3  l  r  x3\ \ l\ \ r\ \ x

4  l  r  a  b4\ \ l\ \ r\ \ a\ \ b

出力

タイプ 22 のクエリの個数を qq として、qq 行出力せよ。 ii 行目には ii 個目のタイプ 22 のクエリに対する答えを出力せよ。

入力例1

4 3
0 1 2 0
0 1 2
3 4 5
6 7 8
6
2 1 2
1 2 4 1
3 1 3 2
4 1 4 0 1
2 1 4
2 2 3

出力例1

1
14
1

はじめ、数列は C=(0,1,2,0)C=(0,1,2,0) です。また、整数行列 WW は次のようになっています。

W=(012345678)W= \begin{pmatrix} 0 & 1 & 2\\ 3 & 4 & 5\\ 6 & 7 & 8 \end{pmatrix}

11 つ目のクエリでは、C1,C2=(0,1)C_1,C_2=(0,1) であり、答えは W0,1=1W_{0,1}=1 です。

22 つ目のクエリでは、区間 [2,4][2,4] の各要素に 11 を加え、33 で割った余りに置き換えます。よって、数列は C=(0,2,0,1)C=(0,2,0,1) となります。

33 つ目のクエリでは、区間 [1,3][1,3] の各要素を 22 倍し、33 で割った余りに置き換えます。よって、数列は C=(0,1,0,1)C=(0,1,0,1) となります。

44 つ目のクエリでは、区間 [1,4][1,4] に含まれる値 00 と値 11 を入れ替えます。よって、数列は C=(1,0,1,0)C=(1,0,1,0) となります。

55 つ目のクエリでは、答えは次のようになります。

1i<j4WCi,Cj=W1,0+W1,1+W1,0+W0,1+W0,0+W1,0 =3+4+3+1+0+3 =14\begin{aligned} \sum_{1 \leq i < j \leq 4} W_{C_i,C_j} &=W_{1,0}+W_{1,1}+W_{1,0}+W_{0,1}+W_{0,0}+W_{1,0}\ =3+4+3+1+0+3\ =14 \end{aligned}

提出


Go (1.21)