专栏文章

题解:P14352 排序

P14352题解参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@ming0u6v
此快照首次捕获于
2025/12/02 01:48
3 个月前
此快照最后确认于
2025/12/02 01:48
3 个月前
查看原文

P14352 排序

赛前写题解加 rp。
题解全是看不懂的高级推法,给个排序网络的思路。
先把 n<kn<k 的情况判掉,此时答案为 n!n!
根据排序网络的经典结论,一个排列 pp 合法当且仅当对于任意 ii,将小于等于 ii 的数视为 00,大于 ii 的数视为 11,按位置排序第 k+1k+111 所在位置之后的所有数都为 11
对于一个确定的 ii 进行考虑,设 11 的位置序列为 pospos,那么上述事情等价于 posk+1npos_{k+1}\sim n 中的数全都大于 ii,即 posk+1,posk+2,posnipos_{k+1},pos_{k+2}\cdots,pos_{n-i} 是连续的且 posni=npos_{n-i}=n。那么就等价于原排列上后 nikn-i-k 个数全部都大于 ii
PS:关于为什么是后 nikn-i-k 个数,原因是在 pospos 序列中 k+1nik+1\sim n-i 一共有 ni(k+1)+1=nikn-i-(k+1)+1=n-i-k11,所以得到了上面的东西。
继续转化,可以转化为 minj=i+k+1naj>i\min_{j=i+k+1}^{n}a_j>i。注意到对于一个位置,最大的限制到其的 ii 的限制是最严格的,所以只需要考虑 ai+k+1>ia_{i+k+1}>i 即可。
ii+1i\rightarrow i+1,则 ai+ki ,i[1,nk]a_{i+k}\geq i\ ,i\in\left[1,n-k\right],那么考虑按照从小到大的顺序将 1,2,,nk1,nk1,2,\cdots,n-k-1,n-k 填入序列,每次填一个数相较于上一个数会多一个合法位置,但上一个数填完后消耗了一个位置,所以 1nk1\sim n-k 全部都有 k+1k+1 个位置可以填,而 nk+1nkn-k+1\sim n-k 这些数全部都不需要考虑位置,直接选没填的位置填即可。所以最终的答案为 k!×(k+1)nkk!\times (k+1)^{n-k},暴力求逆元,用快速幂计算式子后半部分即可。

评论

0 条评论,欢迎与作者交流。

正在加载评论...