2021.07.13 洛谷 P7392

该博客介绍了洛谷P7392题目的解决方案,讨论了一个带有参数k的归并排序问题。题目要求计算经过特定排序函数操作后的有序排列数量。解题思路涉及递归树分析,确定子序列有序的概率,并给出计算最终有序概率的方法。通过样例解释了如何应用该方法,时间复杂度为O(T×logn)。
摘要由CSDN通过智能技术生成

P7392   「TOCO   Round   1」奇怪的排序 \color{green}{\texttt{P7392 「TOCO Round 1」奇怪的排序}} P7392 TOCO Round 1」奇怪的排序

[Problem] \color{blue}{\texttt{[Problem]}} [Problem]

询问 n n n 个数的排列中有多少个排列满足执行了下列函数后变成有序。

在这里插入图片描述

[Solution] \color{blue}{\texttt{[Solution]}} [Solution]

首先,这个函数就是一个归并排序的模板,只是多了一个参数 k k k。很容易可以知道,这个 k k k 是用来限制递归次数的,即最多只能递归 ( k − 1 ) (k-1) (k1) 次。

可以发现,递归树最底下一层其实是把原数列分成了 2 k 2^{k} 2k 个子序列。如果我们要满足最后有序,我们必须要保证最底下的那 2 k 2^{k} 2k 个子序列本身是有序的(因为归并的过程不改变原来子序列内部的顺序,只是把相邻两个子序列有序地合并了起来)。

设每个子序列内有 x x x 个数字,那么它本身就是升序的概率就是 1 x ! \dfrac{1}{x!} x!1 x ! x! x! 表示 x x x 的阶乘,下同)。

由于数列是平均分配的,所以最后每个子序列要么有 ⌊ n 2 k

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值