A15539 | Doping
时间限制1s
内存限制256MB
通过 / 提交0/0
题目描述
We call an array $a$ of length $n$ fancy if for each $1 < i \le n$ it holds that $a_i = a_{i-1} + 1$ .
Let's call $f(p)$ applied to a permutation $^\dagger$ 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 $^\ddagger$ than $p$ , and
- $f(p') = k$ .
Your task is to count for each $1 \le k \le n$ the number of $k$ -special permutations modulo $m$ .
$^\dagger$ 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).
$^\ddagger$ 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$ .
Let's call $f(p)$ applied to a permutation $^\dagger$ 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 $^\ddagger$ than $p$ , and
- $f(p') = k$ .
Your task is to count for each $1 \le k \le n$ the number of $k$ -special permutations modulo $m$ .
$^\dagger$ 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).
$^\ddagger$ 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$ .
输入格式
The first line contains two integers $n$ and $m$ ( $1 \le n \le 2000$ , $10 \le m \le 10^9$ ) — the length of the permutation and the required modulo.
The second line contains $n$ distinct integers $p_1, p_2, \ldots, p_n$ ( $1 \le p_i \le n$ ) — the permutation $p$ .
The second line contains $n$ distinct integers $p_1, p_2, \ldots, p_n$ ( $1 \le p_i \le n$ ) — the permutation $p$ .
输出格式
Print $n$ integers, where the $k$ -th integer is the number of $k$ -special permutations modulo $m$ .
输入输出样例
输入 #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,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]$ .
C++ 编辑器
输入
输出
可保存默认模板;新题优先使用已保存模板。
当前快捷键仅展示,暂不支持修改。
- 撤销
Ctrl / ⌘ + Z - 重做
Ctrl / ⌘ + Y - 查找
Ctrl / ⌘ + F - 全选
Ctrl / ⌘ + A - 复制
Ctrl / ⌘ + C - 剪切
Ctrl / ⌘ + X - 粘贴
Ctrl / ⌘ + V - 自动排版
工具栏排版按钮 - 草稿保存
编辑时自动保存到本机
历史
提交记录
状态说明时间源码
AI
作答助手
你好,我是作答助手。可以问思路、复杂度、样例含义或代码报错原因;不会直接给出完整 AC 代码。
确定要清空代码吗?
提交通过
评测结果:Accepted