CF1750G.Doping

NOI/NOI+/CTSC

通过率:0%

时间限制:3.00s

内存限制:512MB

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

We call an array aa of length nn fancy if for each 1<i≤n1 \lt i \le n it holds that ai=ai−1+1a_i = a_{i-1} + 1.

Let's call f(p)f(p) applied to a permutation†^\dagger of length nn as the minimum number of subarrays it can be partitioned such that each one of them is fancy. For example f([1,2,3])=1f([1,2,3]) = 1, while f([3,1,2])=2f([3,1,2]) = 2 and f([3,2,1])=3f([3,2,1]) = 3.

Given nn and a permutation pp of length nn, we define a permutation p′p' of length nn to be kk-special if and only if:

  • p′p' is lexicographically smaller‡^\ddagger than pp, and
  • f(p′)=kf(p') = k.

Your task is to count for each 1≤k≤n1 \le k \le n the number of kk-special permutations modulo mm.

†^\dagger A permutation is an array consisting of nn distinct integers from 11 to nn in arbitrary order. For example, [2,3,1,5,4][2,3,1,5,4] is a permutation, but [1,2,2][1,2,2] is not a permutation (22 appears twice in the array) and [1,3,4][1,3,4] is also not a permutation (n=3n=3 but there is 44 in the array).

‡^\ddagger A permutation aa of length nn is lexicographically smaller than a permutation bb of length nn if and only if the following holds: in the first position where aa and bb differ, the permutation aa has a smaller element than the corresponding element in bb.

我们称一个长度为 nn 的数组 aa 是“优美的”(fancy),如果对每个 1<i≤n1 \lt i \le n 都满足 ai=ai−1+1a_i = a_{i-1} + 1。

对一个长度为 nn 的排列†^\dagger pp,定义 f(p)f(p) 为其能被划分成的最少子数组个数,使得每个子数组都是优美的。例如:f([1,2,3])=1f([1,2,3]) = 1,而 f([3,1,2])=2f([3,1,2]) = 2,且 f([3,2,1])=3f([3,2,1]) = 3。

给定 nn 和一个长度为 nn 的排列 pp,我们称另一个长度为 nn 的排列 p′p' 是 kk-特殊 的,当且仅当:

  • p′p' 在字典序上严格小于‡^\ddagger pp,且
  • f(p′)=kf(p') = k。

你的任务是:对每个 1≤k≤n1 \le k \le n,计算 kk-特殊排列的个数,并对 mm 取模。

†^\dagger 一个排列是指由 11 到 nn 中 nn 个互不相同的整数以任意顺序组成的数组。例如,[2,3,1,5,4][2,3,1,5,4] 是一个排列;但 [1,2,2][1,2,2] 不是排列(数字 22 出现了两次),[1,3,4][1,3,4] 也不是排列(此时 n=3n=3,但数组中出现了 44)。

‡^\ddagger 长度为 nn 的排列 aa 在字典序上小于长度为 nn 的排列 bb,当且仅当:在 aa 与 bb 第一次出现不同元素的位置上,aa 中该位置的元素严格小于 bb 中对应位置的元素。

输入格式

The first line contains two integers nn and mm (1≤n≤20001 \le n \le 2000, 10≤m≤10910 \le m \le 10^9) — the length of the permutation and the required modulo.

The second line contains nn distinct integers p1,p2,…,pnp_1, p_2, \ldots, p_n (1≤pi≤n1 \le p_i \le n) — the permutation pp.

第一行包含两个整数 nn 和 mm(1≤n≤20001 \le n \le 2000,10≤m≤10910 \le m \le 10^9)—— 分别为排列的长度和所需的模数。

第二行包含 nn 个互不相同的整数 p1,p2,…,pnp_1, p_2, \ldots, p_n(1≤pi≤n1 \le p_i \le n)—— 排列 pp。

输出格式

Print nn integers, where the kk-th integer is the number of kk-special permutations modulo mm.

输出 nn 个整数,其中第 kk 个整数为模 mm 意义下的 kk-特殊排列的数目。

输入输出样例

  • 输入#1

    4 666012
    1 3 4 2

    输出#1

    1 0 1 1
  • 输入#2

    3 10
    3 2 1

    输出#2

    1 2 2
  • 输入#3

    7 1000000000
    7 2 1 3 5 4 6

    输出#3

    1 6 40 201 705 1635 1854
  • 输入#4

    10 11
    10 9 8 7 6 5 4 3 2 1

    输出#4

    1 9 9 0 1 5 5 0 1 0

说明/提示

In the first example, the permutations that are lexicographically smaller than [1,3,4,2][1,3,4,2] are:

  • [1,2,3,4][1,2,3,4], f([1,2,3,4])=1f([1,2,3,4])=1;
  • [1,2,4,3][1,2,4,3], f([1,2,4,3])=3f([1,2,4,3])=3;
  • [1,3,2,4][1,3,2,4], f([1,3,2,4])=4f([1,3,2,4])=4.

Thus our answer is [1,0,1,1][1,0,1,1].

In the second example, the permutations that are lexicographically smaller than [3,2,1][3,2,1] are:

  • [1,2,3][1,2,3], f([1,2,3])=1f([1,2,3])=1;
  • [1,3,2][1,3,2], f([1,3,2])=3f([1,3,2])=3;
  • [2,1,3][2,1,3], f([2,1,3])=3f([2,1,3])=3;
  • [2,3,1][2,3,1], f([2,3,1])=2f([2,3,1])=2;
  • [3,1,2][3,1,2], f([3,1,2])=2f([3,1,2])=2.

Thus our answer is [1,2,2][1,2,2].

在第一个例子中,字典序小于 [1,3,4,2][1,3,4,2] 的排列有:

  • [1,2,3,4][1,2,3,4],f([1,2,3,4])=1f([1,2,3,4])=1;
  • [1,2,4,3][1,2,4,3],f([1,2,4,3])=3f([1,2,4,3])=3;
  • [1,3,2,4][1,3,2,4],f([1,3,2,4])=4f([1,3,2,4])=4。

因此答案为 [1,0,1,1][1,0,1,1]。

在第二个例子中,字典序小于 [3,2,1][3,2,1] 的排列有:

  • [1,2,3][1,2,3],f([1,2,3])=1f([1,2,3])=1;
  • [1,3,2][1,3,2],f([1,3,2])=3f([1,3,2])=3;
  • [2,1,3][2,1,3],f([2,1,3])=3f([2,1,3])=3;
  • [2,3,1][2,3,1],f([2,3,1])=2f([2,3,1])=2;
  • [3,1,2][3,1,2],f([3,1,2])=2f([3,1,2])=2。

因此答案为 [1,2,2][1,2,2]。

输入解题思路,AI测评打分。不知道怎么写?

首页