CF1750G.Doping
NOI/NOI+/CTSC
通过率:0%
时间限制:3.00s
内存限制:512MB
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
We call an array a of length n fancy if for each 1<i≤n it holds that ai=ai−1+1.
Let's call f(p) applied to a permutation† of length n as the minimum number of subarrays it can be partitioned such that each one of them is fancy. For example f([1,2,3])=1, while f([3,1,2])=2 and f([3,2,1])=3.
Given n and a permutation p of length n, we define a permutation p′ of length n to be k-special if and only if:
- p′ is lexicographically smaller‡ than p, and
- f(p′)=k.
Your task is to count for each 1≤k≤n the number of k-special permutations modulo m.
† A permutation is an array consisting of n distinct integers from 1 to n in arbitrary order. For example, [2,3,1,5,4] is a permutation, but [1,2,2] is not a permutation (2 appears twice in the array) and [1,3,4] is also not a permutation (n=3 but there is 4 in the array).
‡ A permutation a of length n is lexicographically smaller than a permutation b of length n if and only if the following holds: in the first position where a and b differ, the permutation a has a smaller element than the corresponding element in b.
我们称一个长度为 n 的数组 a 是“优美的”(fancy),如果对每个 1<i≤n 都满足 ai=ai−1+1。
对一个长度为 n 的排列† p,定义 f(p) 为其能被划分成的最少子数组个数,使得每个子数组都是优美的。例如:f([1,2,3])=1,而 f([3,1,2])=2,且 f([3,2,1])=3。
给定 n 和一个长度为 n 的排列 p,我们称另一个长度为 n 的排列 p′ 是 k-特殊 的,当且仅当:
- p′ 在字典序上严格小于‡ p,且
- f(p′)=k。
你的任务是:对每个 1≤k≤n,计算 k-特殊排列的个数,并对 m 取模。
† 一个排列是指由 1 到 n 中 n 个互不相同的整数以任意顺序组成的数组。例如,[2,3,1,5,4] 是一个排列;但 [1,2,2] 不是排列(数字 2 出现了两次),[1,3,4] 也不是排列(此时 n=3,但数组中出现了 4)。
‡ 长度为 n 的排列 a 在字典序上小于长度为 n 的排列 b,当且仅当:在 a 与 b 第一次出现不同元素的位置上,a 中该位置的元素严格小于 b 中对应位置的元素。
输入格式
The first line contains two integers n and m (1≤n≤2000, 10≤m≤109) — the length of the permutation and the required modulo.
The second line contains n distinct integers p1,p2,…,pn (1≤pi≤n) — the permutation p.
第一行包含两个整数 n 和 m(1≤n≤2000,10≤m≤109)—— 分别为排列的长度和所需的模数。
第二行包含 n 个互不相同的整数 p1,p2,…,pn(1≤pi≤n)—— 排列 p。
输出格式
Print n integers, where the k-th integer is the number of k-special permutations modulo m.
输出 n 个整数,其中第 k 个整数为模 m 意义下的 k-特殊排列的数目。
输入输出样例
输入#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] are:
- [1,2,3,4], f([1,2,3,4])=1;
- [1,2,4,3], f([1,2,4,3])=3;
- [1,3,2,4], f([1,3,2,4])=4.
Thus our answer is [1,0,1,1].
In the second example, the permutations that are lexicographically smaller than [3,2,1] are:
- [1,2,3], f([1,2,3])=1;
- [1,3,2], f([1,3,2])=3;
- [2,1,3], f([2,1,3])=3;
- [2,3,1], f([2,3,1])=2;
- [3,1,2], f([3,1,2])=2.
Thus our answer is [1,2,2].
在第一个例子中,字典序小于 [1,3,4,2] 的排列有:
- [1,2,3,4],f([1,2,3,4])=1;
- [1,2,4,3],f([1,2,4,3])=3;
- [1,3,2,4],f([1,3,2,4])=4。
因此答案为 [1,0,1,1]。
在第二个例子中,字典序小于 [3,2,1] 的排列有:
- [1,2,3],f([1,2,3])=1;
- [1,3,2],f([1,3,2])=3;
- [2,1,3],f([2,1,3])=3;
- [2,3,1],f([2,3,1])=2;
- [3,1,2],f([3,1,2])=2。
因此答案为 [1,2,2]。
输入解题思路,AI测评打分。不知道怎么写?