- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有 5 个文件夹,每个文件夹包含大小为 10KB、500KB、1MB、5MB 和 30MB 的“n”个文件。现在我需要从这些文件夹中选择正好 15000 个文件并将它们放入一个新文件夹中,这样我就可以从每个文件夹中选择至少一个文件和 平均文件大小保持在 1MB 左右。我已经尝试处理加权平均分布以及这个问题 http://goo.gl/uAHOk1但无法得出任何结论。
这个问题可以在多项式时间内解决吗?
来自评论:
最佳答案
如果您希望平均大小尽可能接近您的值,此问题类似于以下 ILP:
s_ij = size of file i in folder j [Parameter]
X_ij = select file i from folder j [Binary variable]
max Sum_ij s_ij * X_ij
such that
Sum_ij s_ij * X_ij <= 15,000 * average_size
Sum_ij X_ij = 15000
Sum_i X_ij >= 1 forall j
这几乎是一个带有额外维度和约束(每个文件夹一个文件)的装箱问题。正如 Harold 提到的,我们可以从遍历每个文件夹并选择一个文件开始——例如最小的一个。这可以在多项式时间内完成。剩下的是装箱问题,您可以从任何文件夹中的任何文件中进行选择,以填补 15,000*average_size 与预选文件总和之间的差距。众所周知,装箱是NP-hard,因此您无法在多项式时间内解决此问题。
关于算法:挑选 n 个不同重量的元素以获得平均元素重量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33587630/
我即将将主干中的某些修订合并到发布分支中。我用 mergeinfo 检查了有多少修订符合合并条件,结果是 42。尽管检查每个修订日志并决定是否应该合并它绝对是可能的并且不太难。然后,我将使用 Tort
我有 5 个文件夹,每个文件夹包含大小为 10KB、500KB、1MB、5MB 和 30MB 的“n”个文件。现在我需要从这些文件夹中选择正好 15000 个文件并将它们放入一个新文件夹中,这样我就可
嗨,我已经成功解析了一个以公里为单位的距离的 XML 文件。但结果我得到了源距离列表,但列表中的最后一个元素包含列表中所有其他元素的总和。如何获取列表中的最后元素 一些源代码: for(int s=0
我正在尝试修剪它,它存储在一个名为 $line 的变量中。 [2012-06-18 10:37:09,026 (there is a lot of text after this, i just cu
我正在使用 Python Selenium 绑定(bind)并测试网络服务器。我试图断言文本“回归”和“回归测试”的存在。有谁知道如何做吗?这是我在检查我感兴趣的元素时看到的内容: Regressi
我是一名优秀的程序员,十分优秀!