acgo题库
  • 首页
  • 题库
  • 学习
  • 天梯
  • 备赛

    竞赛

    • CSP-J/S
    • 蓝桥杯

    考级

    • GESP
    • CPA
    • 电子学会考级
  • 竞赛
  • 讨论
  • 团队
  • 商城
登录
注册
题目详情提交记录(0)
  • 题解

    题意描述 给你一个 01 串,每次可以选择两个数字,当 aia iai>>>aja jaj时进行交换, 反之不交换,无论交不交换都计入次数,让你求使得该串有序(从小到大)的期望次数。 思路 我们将串中数字000 个数记为 cntcntcnt 。 观察题意发现,我们只需要将前 cntcntcnt 个数字全部交换成 000 即可,且前 cntcntcnt 个数字已经出现了$ w 个 0 $时,无论如何交换,都不会使得情况更劣(即不会出现 000 的个数变少的情况,原因见题意加粗部分)。 我们用 fif ifi表示前 cntcntcnt 个数字中有 iii 个数字为 000 的期望。 那么,问题就转化成了使得前 cntcntcnt个数字中多一个000 (当前已有 i−1i−1i−1 个 000 ),期望的选择次数是多少? 我们知道,所有可能的交换方案数为:Cn2C n2Cn2,而只有前 cntcntcnt 个数中的 111 和后 n−cnt+1n−cnt+1n−cnt+1 个数中的 000 交换有意义。所以答案是 (cnt−i+1)2(cnt−i+1) 2(cnt−i+1)2Cn2C n 2Cn2。 那么 fff 数组的转移方程就是: fi =fi−1 + f i =f i−1 + fi =fi−1 + (cnt−i+1)2(cnt−i+1) 2(cnt−i+1)2 Cn2 C n 2 Cn2 code:

    userId_undefined
    红尘一梦
    时空双修者贪心·贪心尝试者
    2阅读
    0回复
    0点赞
暂无数据

提交答案之后,这里将显示提交结果~

首页