CF1837E

原题

翻译

我们先想一下若干全是 1 怎么做

我们可以一层一层的考虑。对于最后一层,我们可以发现 (n2,n] 这些数每对位置应该恰好有一个,因此我们可以计算出方案数为 (n2)!×2n2 ,其中前面指 (n2,n] 的全排列方案数,后面 2n2 则指对于一对位置放在哪一个

然后我们考虑如果不全是 1 怎么做

我们可以发现如果有一个数字 ai>n2 ,则他的位置是固定的,我们即不用考虑他的全排列,也不用考虑他放在一对中的哪个位置;但是这还没完,如果有个数字ain2 ,则他虽然不会影响到排列的方案书,但对于他所在的对中,另一个数的位置是确认的

因此不妨设当前这层中ai>n2 的数有 num1 个, ain2 的数有 num0 个,则我们可以得到这一层的方案数为 (n2num1)!×2n2num0num1

因此我们只需要预处理出在某一范围内的数字有多少个即可,最终复杂度O(n+k)

posted @   FOX_konata  阅读(15)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
点击右上角即可分享
微信分享提示