通过a * b的结果对(a,b)对进行排序

Itadok

我想找到满足某些条件C(m)的最大值m = a * b

1 <= a <= b <= 1,000,000.

为了做到这一点,我想以a * b的降序迭代所有对a,b。

例如,对于最大为5的值,顺序为:

5 x 5 = 25
4 x 5 = 20
4 x 4 = 16
3 x 5 = 15
3 x 4 = 12
2 x 5 = 10
3 x 3 = 9
2 x 4 = 8
2 x 3 = 6
1 x 5 = 5
1 x 4 = 4
2 x 2 = 4
1 x 3 = 3
1 x 2 = 2
1 x 1 = 1

到目前为止,我已经提出了一种类似于BFS的树搜索方法,在该方法中,我从当前“已访问”的集合中生成候选者,并选择最高价值的候选者,但这是一团糟,我不确定正确性。我想知道我是否缺少某种技巧。

如果存在这样的单调函数f(a,b),我也对更一般的排序感兴趣。

为了说明起见,C(m)可能是“如果m 2 + m + 41是素数则返回true,否则返回false”,但我确实在寻找一种通用方法。

文森特·范·德·韦勒

只要C(m)如此神奇,您就不能使用任何更好的技术来直接找到您的解决方案,因此您确实需要以a*b递减的顺序遍历所有内容,这就是我要做的:

用所有对初始化一个max-heap,(a, b)使a = b这意味着堆包含(0, 0), (1, 1), ... , (1.000.000, 1.000.000)堆应该基于该a * b值。

现在不断:

  1. (a, b)从堆中获取最大对
  2. 验证是否(a, b)满意C(a * b)如果是这样,您就完成了。
  3. 否则,添加(a, b-1)到堆中(已提供b > 0,否则什么也不做)。

这是一个非常简单的O(n log n)时间和O(n)空间算法,只要您能够快速(几次迭代)找到答案即可。这当然取决于C


如果遇到空间问题,您当然可以通过将问题分成多个子问题来轻松地降低空间复杂度,例如2:

  1. 只添加(500.000, 500.000), (500.001, 500.001), ... , (1.000.000, 1.000.000)到堆中并找到最佳配对(a, b)
  2. 对进行相同操作(0, 0), (1, 1), ... (499.999, 499.999)
  3. 采取两种解决方案中最好的一种。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

是否可以通过A减B索引mysql表以进行排序?

来自分类Dev

Perl高级排序如何通过使用sort函数中的$ a和$ b值对值进行排序

来自分类Dev

通过JCL排序/同步排序,从文件B的列B中减去文件A的列A中的值。在FILE3中显示结果(新文件)

来自分类Dev

通过l * a * b进行颜色分割

来自分类Dev

如何通过mongoDB中函数的结果对查询结果进行排序

来自分类Dev

MySQL-如何通过组函数的结果进行排序

来自分类Dev

通过枚举对LINQ表达式的结果进行排序

来自分类Dev

Django-通过实例更新时间对queryset结果进行排序

来自分类Dev

通过联接表的特定ID对mysql结果进行排序

来自分类Dev

通过字符串比较的结果对SQL SELECT进行排序

来自分类Dev

如何通过关联的模型计数对ActiveRecord结果进行排序?

来自分类Dev

如何通过结果函数对List <T>进行排序?

来自分类Dev

通过外部计算的分数对一组结果进行排序

来自分类Dev

是否可以对数据框中的列进行重新排序,以便通过指定将D移至B和C之间来将ABCDE重新排序为ABDCE?

来自分类Dev

给定两个未排序的数组 A 和 B ,通过只对数组中的一个进行排序,找到总和(或差)等于给定 k 的一对元素

来自分类Dev

如何通过2种不同的排序方式对MySQL结果进行排序?

来自分类Dev

通过单击表头进行排序

来自分类Dev

通过SQL进行Rails排序

来自分类Dev

SELECT WHERE IN(a,b,c)查询:按条件顺序对结果进行排序(a,b,c)

来自分类Dev

通过reddit排序算法对mongodb进行排序

来自分类Dev

通过reddit排序算法对mongodb进行排序

来自分类Dev

如何通过ACCESS SQL中特定列的数量对查询结果进行排序?

来自分类Dev

通过另一个ID数组对ActiveRecord结果集进行排序

来自分类Dev

为什么不能通过对新列表进行排序来打印结果?

来自分类Dev

如何通过另一个表列对Laravel雄辩的结果进行排序

来自分类Dev

如何在循环中循环并通过AJAX调用对JSON对象的结果进行排序?

来自分类Dev

通过实体框架中的两个不同字段对结果进行排序

来自分类Dev

通过字段之间的最大改进对 mongo 中的结果进行排序

来自分类Dev

按列表A的排序对列表B进行排序?

Related 相关文章

  1. 1

    是否可以通过A减B索引mysql表以进行排序?

  2. 2

    Perl高级排序如何通过使用sort函数中的$ a和$ b值对值进行排序

  3. 3

    通过JCL排序/同步排序,从文件B的列B中减去文件A的列A中的值。在FILE3中显示结果(新文件)

  4. 4

    通过l * a * b进行颜色分割

  5. 5

    如何通过mongoDB中函数的结果对查询结果进行排序

  6. 6

    MySQL-如何通过组函数的结果进行排序

  7. 7

    通过枚举对LINQ表达式的结果进行排序

  8. 8

    Django-通过实例更新时间对queryset结果进行排序

  9. 9

    通过联接表的特定ID对mysql结果进行排序

  10. 10

    通过字符串比较的结果对SQL SELECT进行排序

  11. 11

    如何通过关联的模型计数对ActiveRecord结果进行排序?

  12. 12

    如何通过结果函数对List <T>进行排序?

  13. 13

    通过外部计算的分数对一组结果进行排序

  14. 14

    是否可以对数据框中的列进行重新排序,以便通过指定将D移至B和C之间来将ABCDE重新排序为ABDCE?

  15. 15

    给定两个未排序的数组 A 和 B ,通过只对数组中的一个进行排序,找到总和(或差)等于给定 k 的一对元素

  16. 16

    如何通过2种不同的排序方式对MySQL结果进行排序?

  17. 17

    通过单击表头进行排序

  18. 18

    通过SQL进行Rails排序

  19. 19

    SELECT WHERE IN(a,b,c)查询:按条件顺序对结果进行排序(a,b,c)

  20. 20

    通过reddit排序算法对mongodb进行排序

  21. 21

    通过reddit排序算法对mongodb进行排序

  22. 22

    如何通过ACCESS SQL中特定列的数量对查询结果进行排序?

  23. 23

    通过另一个ID数组对ActiveRecord结果集进行排序

  24. 24

    为什么不能通过对新列表进行排序来打印结果?

  25. 25

    如何通过另一个表列对Laravel雄辩的结果进行排序

  26. 26

    如何在循环中循环并通过AJAX调用对JSON对象的结果进行排序?

  27. 27

    通过实体框架中的两个不同字段对结果进行排序

  28. 28

    通过字段之间的最大改进对 mongo 中的结果进行排序

  29. 29

    按列表A的排序对列表B进行排序?

热门标签

归档