gpt4 book ai didi

c++ - 计算变化数组中的预期反转次数

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:00:17 30 4
gpt4 key购买 nike

<分区>

问题:我们有一个大小为 n 的数组我们最多可以执行 K每个操作都可以的操作

  1. 将反转次数减少 1。
  2. 对整个数组进行随机洗牌。

我的问题是执行 K以最小化最终数组中预期的反转次数的方式进行操作。

约束:
100 个带有
的测试用例1 < n < 100
1 < K < n(n-1)/2

我的方法:我正在考虑动态编程解决方案。我可以计算出恰好有 e 的概率大小数组的反转 n使用马霍尼亚数。我还填充了一个数组 dp[k+1][1+n(n-1)/2]行明智这样 dp[i][j]表示具有 j 的数组中的最小预期反转i 之后的倒置操作已经执行,然后使用它我可以生成 (i+1)<sup>th</sup> 的最小预期值对数组中所有可能的反转操作。

由于 c++ 中 double 的限制,这种方法的问题是概率不准确,该算法是 O(kn<sup>2</sup>)对于每个非常慢的测试用例。

例如:
大小为 100 的数组中没有反转的概率 = 1.0/factorial(100) ~ 10<sup>-160</sup> (我认为这里缺乏精确性)。

我认为有一些准确且更有效的方法。请提出一些想法。

谢谢

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com