#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'\} 满足 si⋅k mod L′=sis'_{i \cdot k \bmod L} = s_i(下标从 00 开始)。其中 kk 是一个给定的正整数常数,且保证 gcd⁡(k,L)=1\gcd(k, L) = 1。

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

输入格式

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

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

接下来 nn 行描述序列 {s}\{s\},每行两个整数 li,vil_i, v_i (1≤li≤1091 \le l_i \le 10^9, 1≤vi≤1031 \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