嘘月

Luogu
IDLGP8555
Time1800ms
Memory512MB
DifficultyP7
洛谷原创O2优化洛谷月赛
赫尔德想对上面的问题进行探究,她想先做一些统计,于是她抽象了这个问题。 对于一个长为 $n$ 的排列,我们维护一个下标 $t$,初始 $t=m$。 重复以下过程: - 从下标在 $1\sim t$ 的元素中选一个没标记过的,并将其标记。若标记的数比上一次标记的数大且 $t<n$,则 $t$ 自增 $1$;否则结束此过程。在你进行第一次标记前,上一次标记的数视为 $0$。 我们称这样的排列是好的: - 存在某种方法,使得在经过若干次操作后,$t=n$。 现在,给定 $m$,求长为 $n$ 的好的排列在所有长为 $n$ 的排列中所占比例,对 $998244353$ 取模。换言之,若长为 $n$ 的好的排列一共有 $x$ 个,你需要输出 $\frac x{n!}$ 取模 $998244353$ 的结果。如果你不理解有理数的取模,可以看[这道题目](/problem/P2613)。 有 $q$ 次询问,每次给出一个 $m$。 ## Input 第一行两个正整数 $n,q$。 第二行 $q$ 个正整数,表示每次询问的 $m_i$。保证询问升序且两两不同。 ## Output 对于每次询问一行一个整数表示答案对 $998244353$ 取模的值。 [samples] ## Background “我早已认不出你的眼睛,也没有在想念你的面容; 你还是没有说出再见,就化作黑夜离开了。” [赫尔德看着潮水](https://baike.baidu.com/item/%E4%B8%A5%E7%95%AF/23345630?fr=aladdin),忽觉这不断上涨的潮水就像是持续上升的热情,它维持着热恋的时间,而激动的情绪又带给我们更多的热情。但是初识的热情终会逐渐平淡,又有多少人能在冷却的心跳中找到其中不变的节奏,走完这一生呢? ## Note **【样例解释 \#1】** 可以使得 $t=n$ 的排列的数量分别为 $5,90,120$,排列总共有 $5!=120$ 种,所以分别需要输出 $\frac{5}{120},\frac{90}{120},\frac{120}{120}$。取模后即为样例输出中的答案。 $m=1$ 时,以下是所有可以使得 $t=n$ 的排列: $$ \{1,2,3,4,5\},\{2,3,4,5,1\},\{1,3,4,5,2\},\{1,2,4,5,3\},\{1,2,3,5,4\} $$ $m=2$ 时,列出了一些可以使得 $t=n$ 的排列: $$ \{1,4,2,3,5\},\{1,5,4,3,2\} $$ 和一些不能使得 $t=n$ 的排列: $$ \{5,4,3,2,1\},\{3,5,2,1,4\} $$ --- **【数据范围】** 保证 $1\le q\le n\le 10^5$,$1\leq m_i \leq n$,询问的 $m_i$ 互不相同且升序排列。 $$ \def\arraystretch{1.5} \begin{array}{c|c|c|c}\hline \textbf{子任务编号}&\bm{~~~~~~~n\le~~~~~~~}&\textbf{~~~特殊限制~~~}&\textbf{~~分数~~}\cr\hline \textsf1 & 5 &&7\cr\hline \textsf2 & 200&&23\cr\hline \textsf3 & 2\times 10^4 &m_i=1& 9\cr \hline \textsf4 & 2\times 10^4 &2m_i\ge n& 3\cr \hline \textsf5 & 2\times 10^4 &&12\cr\hline \textsf6 & &q=1&36\cr\hline \textsf7 & &&10\cr\hline \end{array} $$ 提示:$O(n^2)$ 能跑挺多点的。
Samples
Input #1
5 3
1 2 3
Output #1
291154603
249561089
1
Input #2
50 5
4 7 9 14 17
Output #2
344293672
864377042
192544332
688054502
97923957
API Response (JSON)
{
  "problem": {
    "name": "嘘月",
    "description": {
      "content": "赫尔德想对上面的问题进行探究,她想先做一些统计,于是她抽象了这个问题。 对于一个长为 $n$ 的排列,我们维护一个下标 $t$,初始 $t=m$。 重复以下过程: - 从下标在 $1\\sim t$ 的元素中选一个没标记过的,并将其标记。若标记的数比上一次标记的数大且 $t<n$,则 $t$ 自增 $1$;否则结束此过程。在你进行第一次标记前,上一次标记的数视为 $0$。 我们称这样的排列是",
      "description_type": "Markdown"
    },
    "platform": "Luogu",
    "limit": {
      "time_limit": 1800,
      "memory_limit": 524288
    },
    "difficulty": {
      "LuoguStyle": "P7"
    },
    "is_remote": true,
    "is_sync": true,
    "sync_url": null,
    "sign": "LGP8555"
  },
  "statements": [
    {
      "statement_type": "Markdown",
      "content": "赫尔德想对上面的问题进行探究,她想先做一些统计,于是她抽象了这个问题。\n\n对于一个长为 $n$ 的排列,我们维护一个下标 $t$,初始 $t=m$。\n\n重复以下过程:\n\n- 从下标在 $1\\sim t$ 的元素中选一个没标记过的,并将其标记。若标记的数比上一次标记的数大且 $t<n$,则 $t$ 自增 $1$;否则结束此过程。在你进行第一次标记前,上一次标记的数视为 $0$。\n\n我们称这样的排列是...",
      "is_translate": false,
      "language": "English"
    }
  ]
}
Full JSON Raw Segments