#P14808. [CCPC 2024 哈尔滨站] 子序列计数

[CCPC 2024 哈尔滨站] 子序列计数

题目描述

给定一个长为 mm 的序列 {t}\{t\} 和长为 LL 的序列 {s}\{s\},序列 {s}\{s\}nn 段连续的部分从左往右依次拼接而成,第 ii 段包含 lil_i 个相同的元素,每个元素的值都为 viv_i

序列 {s}\{s'\} 由序列 {s}\{s\} 按一定规则打乱形成。具体而言,序列 {s}\{s'\} 满足 sikmodL=sis'_{i \cdot k \bmod L} = s_i(下标从 00 开始)。其中 kk 是一个给定的正整数常数,且保证 gcd(k,L)=1\gcd(k, L) = 1

{t}\{t\}{s}\{s'\} 中以子序列形式出现的次数。形式化地说,如果一组严格递增的索引 0i1<i2<<im<L0 \le i_1 < i_2 < \dots < i_m < L,满足对于每个 j=1,2,,mj = 1, 2, \dots, m,都有 tj=sijt_j = s'_{i_j},那么称 {t}\{t\}{s}\{s'\} 在这一组索引下的子序列。你需要求出有多少种不同的索引组满足这一条件。由于答案可能很大,你需要将答案对 998244353998244353 取模。

输入格式

第一行四个整数 n,m,k,Ln, m, k, L (1n2×1031 \le n \le 2 \times 10^3, 1m101 \le m \le 10, 1k<L1091 \le k < L \le 10^9, gcd(k,L)=1\gcd(k, L) = 1)。

第二行 mm 个整数表示序列 {t}\{t\} (1ti1031 \le t_i \le 10^3)。

接下来 nn 行描述序列 {s}\{s\},每行两个整数 li,vil_i, v_i (1li1091 \le l_i \le 10^9, 1vi1031 \le v_i \le 10^3)。保证 i=1nli=L\sum_{i=1}^n l_i = L

输出格式

一行一个整数,表示答案对 998244353998244353 取模后的结果。

4 2 17 27
3 1
10 3
6 1
10 3
1 1
76
5 3 1789 15150
555 718 726
72 555
1029 718
5807 726
1002 718
7240 555
390415327