問題一覧 > 通常問題

No.2653 [Cherry 6th Tune] Re: start! (Make it Zero!)

レベル : / 実行時間制限 : 1ケース 2.000秒 / メモリ制限 : 512 MB / 標準ジャッジ問題
タグ : / 解いたユーザー数 42
作問者 : 👑 KazunKazun / テスター : AngrySadEightAngrySadEight
0 ProblemId : 5909 / 出題時の順位表 / 自分の提出
問題文最終更新日: 2024-02-23 21:37:03

導入

もう一度, ゼロからやり直さない?

問題文

Make it Zero!

長さ $N$ の整数列 $B=(B_1, \dots, B_N)$ が与えられる. 各項は $0$ 以上 $M$ 未満の整数である. また, $\displaystyle \sum_{i=1}^N B_i$ は $M$ の倍数であることが保証されている.

ここで, 全ての項が $0$ である非空整数列を ゼロ列 ということにする.

以下の操作を $0$ 回以上繰り返して行うことにより, $B$ を ゼロ列 にする.

  • 操作: $B$ にある連続する $2$ つの整数を選び, 削除する. そして, その削除した $2$ つの整数を $x,y$ としたとき, $(x+y)$ を $M$ で割った余りを元あった場所に挿入する.

$B$ を ゼロ列 にするためには, 最低何回の操作が必要か?

なお, この問題の制約下では, 操作を $0$ 回以上繰り返すことで, $B$ を ゼロ列 にすることが可能であることが証明できる.

長さ $N$ の整数列 $X=(X_1, \dots, X_N)$ が与えられる. $X$ の各項は $0$ 以上 $M$ 未満の整数または $-1$ である.

以下の $3$ 個の条件を満たす長さ $N$ の整数列 $A=(A_1, \dots, A_N)$ において, そのような $A$ 全てに対する Make it Zero! の解の総和を $998244353$ で割った余りを求めよ.

  • $i=1,2, \dots, N$ に対して, $0 \leq A_i \lt M$ である.
  • $i=1,2, \dots, N$ に対して, $X_i \neq -1$ ならば, $A_i=X_i$ である.
  • $\displaystyle \sum_{i=1}^N A_i$ は $M$ の倍数である.

ただし, このような $A$ が存在しない場合, 解の総和は $0$ であるとする.

$T$ 個のテストケースについて答えよ.

制約

  • $1 \leq T \leq 10^5$
  • 各テストケースに対する制約
    • $1 \leq N \leq 2 \times 10^5$.
    • $1 \leq M \leq 10^9$.
    • $X_i$ は $0$ 以上 $M$ 未満の整数または $-1$ である. $\quad (1 \leq i \leq N)$.
  • テストファイルに対する制約
    • $T$ 個のテストケースにおける $N$ の総和は $2 \times 10^5$ 以下である.
  • 入力は全て整数である.

入力

$T$
${\rm case}_1$
$\vdots$
${\rm case}_T$
なお, 各テストケースは以下の形式で与えられる.
$N$ $M$
$X_1$ $X_2$ $\cdots$ $X_N$

出力

出力は $T$ 行からなる. 第 $t~(1 \leq t \leq T)$ 行目には第 $t$ テストケースに対する解答を整数として出力せよ.

最後に改行を忘れないこと.

サンプル

サンプル1
入力
4
3 10
4 -1 7
5 100
10 20 30 40 50
6 123456789
0 0 0 0 0 0
6 20230628
-1 -1 -1 -1 -1 -1
出力
2
0
0
324811269

  • [第 $1$ テストケース] 条件を満たす $A$ は $A=(4,9,7)$ のただ $1$ つである. この $A$ に対して, Make it Zero! を解く. 例えば, 以下のように操作すると, $2$ 回の操作でゼロ列にすることができる.

    • 第 $2$ 項, 第 $3$ 項を選ぶ. つまり, $A$ から $9,7$ を削除し, その場所に $9+7$ を $10$ で割った余りである $6$ を挿入する. つまり, $A$ は $(4,6)$ になる.
    • 第 $1$ 項, 第 $2$ 項を選ぶ. つまり, $A$ から $4,6$ を削除し, その場所に $4+6$ を $10$ で割った余りである $0$ を挿入する. つまり, $A$ は $(0)$ になる.
    また, $2$ 手未満で $A$ をゼロ列にすることはできない. よって, $A=(4,9,7)$ における Make it Zero! の正解は $2$ である.

    よって, 条件をみたすような $A$ は $A=(4,9,7)$ のみだったので, 求めるべき解答は $2$ である.

  • [第 $2$ テストケース] 条件を満たす $A$ は存在しない. よって, 求めるべき解答は $0$ である.

  • [第 $3$ テストケース] 条件を満たす $A$ は $A=(0,0,0,0,0,0)$ のみである. この $A$ 自身がゼロ列であるので, この $A$ における Make it Zero! の解は $0$ である.

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