题目描述
有一个有 N 个顶点的有向图,顶点编号为 1 到 N。图中不存在重边,但可能存在自环。此外,图中所有的边都满足以下条件:
- 假设有一条从顶点 s 指向顶点 t 的边,则 s, t 至少满足 0≤t−s≤2 或 t=1 之一。
图中边的存在情况由长度为 N 的数列 A,B,C,D 给出。A, B, C, D 的每个元素含义如下(以下 A 的第 n 个元素记为 An,Bn, Cn, Dn 同理):
- An:如果存在从顶点 n 到顶点 n 的边,则 An=1,否则 An=0。
- Bn:如果存在从顶点 n 到顶点 n+1 的边,则 Bn=1,否则 Bn=0(其中 BN=0)。
- Cn:如果存在从顶点 n 到顶点 n+2 的边,则 Cn=1,否则 Cn=0(其中 CN−1=CN=0)。
- Dn:如果存在从顶点 n 到顶点 1 的边,则 Dn=1,否则 Dn=0(其中 D1=A1)。
请你求出,在给定的图中,从顶点 1 出发,以顶点 N 结束,且恰好经过 K 条边的 walk 的数量,并对 998244353 取模。
这里,“从顶点 1 出发,以顶点 N 结束,且恰好经过 K 条边的 walk”指的是一个顶点序列 v0=1,v1,…,vK=N,对于每个 i(0≤i<K),存在从 vi 到 vi+1 的有向边。两个 walk 只要顶点序列不同就视为不同。
输入格式
输入以如下格式从标准输入给出。
N K A1 A2 … AN B1 B2 … BN C1 C2 … CN D1 D2 … DN
输出格式
请输出从顶点 1 出发,以顶点 N 结束,且恰好经过 K 条边的 walk 的数量,对 998244353 取模。
样例 1
输入
3 3
1 0 1
1 1 0
1 0 0
1 0 1
输出
6
样例 2
输入
4 6
1 1 1 1
1 1 1 0
1 1 0 0
1 0 0 0
输出
50
样例 3
输入
10 500000
0 1 0 1 0 0 0 0 1 1
1 1 1 0 1 1 1 0 1 0
0 0 1 1 0 0 1 1 0 0
0 1 1 1 1 1 0 1 1 0
输出
866263864
说明/提示
约束条件
- 2≤N≤5×104
- 1≤K≤5×105
- Ai,Bi,Ci,Di∈{0,1}
- A1=D1
- BN=CN−1=CN=0
样例解释 1
将给定的图画出来如下所示。

满足条件的 walk 有如下 6 个:
- 1,1,1,3
- 1,1,2,3
- 1,1,3,3
- 1,2,3,3
- 1,3,1,3
- 1,3,3,3
由 ChatGPT 4.1 翻译