atcoder#ARC146F. [ARC146F] Simple Solitaire

[ARC146F] Simple Solitaire

题目描述

(1,2,,N) (1,2,\dots,N) の順列 P P を用意して、次の操作を行います。

N N 枚のカードがあります。これらのカードには 1 1 から N N の番号がついてます。カード i i には Pi P_i が書かれています。

整数 X=1 X=1 があります。はじめ PCT 君は何も持っていません。PCT 君は以下の操作を i=1,2,,N i=1,2,\dots,N の順で行います。

  • カード i i を手に入れる。その後、X X が書かれたカードを持っている限り以下の行動を繰り返す。

  • X X の書かれているカードを食べ、X X 1 1 増やす。

  • 現在持っているカードの枚数が M M 枚以上の場合、持っているカードを全て捨てて操作を終了する。これ以降も操作は行わない。

ここで、以下のように順列 P P のスコアを定義します。

  • カードが捨てられて操作が終わった場合、P P のスコアを 0 0 とする。
  • カードが捨てられずに操作が最後まで行われた場合、P P のスコアを i=1N1 \prod_{i=1}^{N-1} (i (i 回目の操作終了時に PCT 君が持っているカードの枚数 ) ) とする。

P P としてあり得るものは N! N! 通りありますが、そのすべてに対してスコアの総和を 998244353 998244353 で割ったあまりを出力してください。

输入格式

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

N N M M

输出格式

答えを出力せよ。

题目大意

题目描述

有一个长为 NN 的排列 PP

在接下来的 NN 天里,为了救她的朋友, linyue\mathsf{linyue} 会参加一个仪式,在第 ii 天的行动如下所示:

首先,linyue\mathsf{linyue} 会参加这一天的祭祀,然后获得编号为 PiP_i 的诅咒。

然后,linyue\mathsf{linyue} 会净化自己身上的诅咒。只要所有编号小于某个诅咒的诅咒都被 linyue\mathsf{linyue} 获得过,那么这个诅咒就会被净化。(特别地,11 号诅咒总是能被净化)

最后,如果此时 linyue\mathsf{linyue} 身上有不少于 MM 种不同的诅咒,那么这个仪式会立刻结束。

这个仪式的贡献是前 N1N-1 天里每一天结束时 linyue\mathsf{linyue} 身上未净化的诅咒的数量之积。当然,如果仪式中止,贡献就是 00

理论上在第 NN 天,linyue\mathsf{linyue} 会获得并净化所有 NN 种诅咒,她的朋友也能恢复健康,这样一切都能恢复如初!当然,这需要仪式能有足够的贡献。仪式的贡献只和排列 PP 有关,所以 linyue\mathsf{linyue} 希望你能对于所有 N!N! 种排列 PP,求仪式的贡献和。

数据范围

2N2×1052 ≤ N ≤ 2 × 10^5

2MN2 ≤ M ≤ N

样例解释

对于第 11 组样例,N=3,M=2N=3,M=2。唯一一个可以让仪式有贡献的 PP(3,1,2)(3,1,2)。此时,linyue\mathsf{linyue} 会在第一天获得 33 号诅咒,在第二天获得并净化 11 号诅咒,因此有 11 的贡献。对于其他的排列,如果 P3=1P_3=1,那么就会导致她在第二天结束时有 22 种诅咒而中止仪式,否则就会导致在前两天里有一天结束时身上未净化诅咒数量为 00 而使得乘积为 00

translated by 隔壁泞2的如心

3 2
1
3 3
5
146146 146
103537573

提示

制約

  • 2  N  2 × 105 2\ \le\ N\ \le\ 2\ \times\ 10^5
  • 2  M  N 2\ \le\ M\ \le\ N
  • 入力は全て整数である。

Sample Explanation 1

P=(3,1,2) P=(3,1,2) の場合、以下のように操作が行われます。 - 1 1 回目の操作 - PCT 君がカード 1 1 を手に入れる。 - 現在持っているカードの枚数は 1 1 枚なので、操作を続行する。 - 2 2 回目の操作 - PCT 君がカード 2 2 を手に入れる。 - カード 2 2 を食べ、X X 2 2 にする。 - 現在持っているカードの枚数は 1 1 枚なので、操作を続行する。 - 3 3 回目の操作 - PCT 君がカード 3 3 を手に入れる。 - カード 1,3 1,3 を食べ、X X 4 4 にする。 - 現在持っているカードの枚数は 0 0 枚なので、操作を続行する。 操作が最後まで行われたため、(3,1,2) (3,1,2) のスコアは 1 × 1 = 1 1\ \times\ 1\ =\ 1 です。 (3,1,2) (3,1,2) 以外にスコアが 1 1 以上になる順列は存在しないため、解は 1 1 です。