atcoder#AGC054E. [AGC054E] ZigZag Break

[AGC054E] ZigZag Break

题目描述

整数 N,A N,A が与えられます. (1,2,,N) (1,2,\cdots,N) の順列 P=(P1,P2,,PN) P=(P_1,P_2,\cdots,P_N) であって,以下の条件を満たすものの個数を 998244353 998244353 で割った余りを求めてください.

  • P1=A P_1=A
  • 以下の操作を繰り返すことで,P P の要素数を 2 2 にできる.
    • 3 3 つの連続する要素 x,y,z x,y,z を選ぶ. ただしこの時,y < min(x,z) y\ <\ \min(x,z) もしくは y > max(x,z) y\ >\ \max(x,z) が成り立っている必要がある. そして,y y P P から消す.

一つの入力ファイルにつき,T T 個のテストケースに答えてください.

输入格式

入力は以下の形式で標準入力から与えられる.

T T case1 case_1 case2 case_2 \vdots caseT case_T

各テストケースは以下の形式で与えられる.

N N A A

输出格式

各テストケースについて答えを出力せよ.

题目大意

一个 {1,,N}\{1, \dots, N\} 的排列 PP 是好的,当且仅当:

  • P1=AP_1 = A,其中 AA 是一个给定常数。
  • 可以通过施加一系列以下操作,将 PP 删除至只剩两个元素:选择连续的三个元素 x,y,zx, y, z,满足 y<min{x,z}y < \min\{x, z\} 或者 y>max{x,z}y > \max\{x, z\},随后删除 yy

请你计数有多少长度为 NN 的好排列,对 998244353998244353 取模。

TT 组数据(1T1051\le T\le 10^5),每组给出 N,AN, A1AN1061\le A\le N\le 10^6)。注意并不保证 N106\sum N\le10^6

8
3 1
3 2
3 3
4 1
4 2
4 3
4 4
200000 10000
1
2
1
3
5
5
3
621235018

提示

制約

  • 1  T  5 × 105 1\ \leq\ T\ \leq\ 5\ \times\ 10^5
  • 3  N  106 3\ \leq\ N\ \leq\ 10^6
  • 1  A  N 1\ \leq\ A\ \leq\ N
  • 入力される値はすべて整数

Sample Explanation 1

例えば,N=4,A=2 N=4,A=2 の時,P=(2,1,4,3) P=(2,1,4,3) は条件を満たします. 以下に手順の例を示します. - (x,y,z)=(2,1,4) (x,y,z)=(2,1,4) を選び,1 1 を消す.P=(2,4,3) P=(2,4,3) になる. - (x,y,z)=(2,4,3) (x,y,z)=(2,4,3) を選び,4 4 を消す.P=(2,3) P=(2,3) になる.