問題一覧 > 通常問題

No.3052 Increasing Sliding Window Minimum

レベル : / 実行時間制限 : 1ケース 2.000秒 / メモリ制限 : 512 MB / 標準ジャッジ問題
タグ : / 解いたユーザー数 21
作問者 : suisen / テスター : hamamu 👑 rin204
1 ProblemId : 10653 / 出題時の順位表 / 自分の提出
問題文最終更新日: 2025-01-25 15:04:22

問題文

$2$ 以上の整数 $n$ と長さ $n$ の整数列 $A=(A_1,A_2,\ldots,A_n)$ が与えられます。ここで、全ての $i=1,2,\ldots,n$ について $A_i=-1$ または $1\leq A_i\leq n$ が成り立ちます。

$(1,2,\ldots,n)$ の順列 $P=(P_1,P_2,\ldots,P_n)$ のうち、以下の条件を全て満たすものの個数を $998244353$ で割った余りを求めてください。

  • 全ての $1$ 以上 $n$ 以下の整数 $i$ について、$A_i\neq -1$ ならば $P_i=A_i$ である
  • 全ての $1$ 以上 $n-2$ 以下の整数 $i$ について、$\min(P_i,P_{i+1})\leq \min(P_{i+1},P_{i+2})$ である

1 つのファイルにつき $T$ 個のテストケースが与えられるので、その全てに対して上記の問題を解いてください。

入力

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

$T$
$\mathrm{testcase}_1$
$\mathrm{testcase}_2$
$\vdots$
$\mathrm{testcase}_T$

ここで $\mathrm{testcase}_i$ は $i$ 番目のテストケースを表し、以下の形式で与えられる。

$n$
$A_1$ $A_2$ $\cdots$ $A_n$
  • 入力は全て整数で与えられる
  • $1\leq T\leq 5000$
  • $2\leq n\leq 5000$
  • $A_i=-1$ または $1\leq A_i\leq n$
  • $i\neq j$ なる $i,j$ に対して、$A_i\neq -1, A_j\neq-1$ ならば $A_i\neq A_j$
  • $T$ 個のテストケースにわたる $n$ の総和は $5000$ 以下

出力

$T$ 行出力してください。$i\ (1\leq i\leq T)$ 行目には $i$ 番目のテストケースに対する答えを出力してください。$T$ 行目の出力の後も改行してください。

サンプル

サンプル1
入力
4
3
-1 2 -1
5
3 -1 2 -1 -1
5
5 4 3 2 1
20
-1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
出力
1
2
0
799043977
  • 1 つ目のテストケースについて
    この入力は $n=3,\ A=(-1,2,-1)$ を表します。

    $P=(1,2,3)$ は条件を満たす唯一の順列です。従って答えとして $1$ を出力してください。

    $P=(3,2,1)$ は 1 つめの条件を満たしますが、$\min(P_1,P_2)=2\gt \min(P_2,P_3)=1$ より 2 つめの条件を満たしません。

    $P=(2,1,3)$ は 2 つめの条件を満たしますが、$A_2\neq -1$ かつ $P_2\neq A_2$ より 1 つめの条件を満たしません。

  • 3 つ目のテストケースについて
    条件を満たす順列 $P$ が存在しないこともあります。

  • 4 つ目のテストケースについて
    $998244353$ で割った余りを出力する必要があることに注意してください。

提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。