- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
假设我有两座建筑物,我可以在其中 build 不同的单元。一个建筑物只能同时 build 一个单元,但有一个最多 5 个单元的 fifo 队列,它们将按顺序 build 。每个单元都有构建时间。我需要知道,什么是最快的解决方案来尽可能快地获得我的单元,考虑到我建筑物的构建队列中已经存在的单元。我认为像 RoundRobin 这样的“著名”算法在这里不起作用。
有什么算法可以解决这个问题吗?
最佳答案
这让我想起了星际争霸:D
我只想在建筑物队列中添加一个整数,代表它忙碌的时间。当然,您必须每个时间单位更新一次此变量。 (这里的时间单位是“s”,代表秒)
假设我们有一栋建筑,我们要提交 3 个单元,每个单元需要 5 秒才能完成。总计 15 秒。我们在时间 = 0。然后我们有另一个建筑物,我们提交 2 个单元,每个单元需要 6 个时间单元来完成。
所以我们可以有一个这样的表:
Time 0
Building 1, 3 units, 15s to complete.
Building 2, 2 units, 12s to complete.
Time 1
Building 1, 3 units, 14s to complete.
Building 2, 2 units, 12s to complete.
而我们想要添加另一个需要 2 秒的单元,我们可以简单地遍历选定的建筑物并选择完成时间最短的一个。在这种情况下,这将是建筑物 2。这将导致 Time2...
Time 2
Building 1, 3 units, 13s to complete
Building 2, 3 units, 11s+2s=13s to complete
...
Time 5
Building 1, 2 units, 10s to complete (5s are over, the first unit pops out)
Building 2, 3 units, 10s to complete
等等。
当然,您必须注意生产设施的上限。就像如果建筑物有 5 个元素,不要分配任何东西并选择下一个完成时间最短的建筑物。
我不知道您是否可以使用您的引擎轻松实现这一点,或者它是否支持某种时间单位。
这只会导致每个时间单位更新所有生产设施一次,O(n),其中 n 是可以生产某种东西的建筑物的数量。如果您要提交一个单元,这将花费 O(1) 假设您将选定的建筑物按排序顺序排列,最低的在前 - 所以只是第一个元素查找。在这种情况下,您必须在操作单位(如取消或添加)后对列表进行求助。
否则阿米特的答案似乎也是可能的。
关于algorithm - 负载均衡算法——特例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6360400/
数组的倒置计数表示——数组离排序有多远(或接近)。如果数组已经排序,则反转计数为 0。如果数组以相反的顺序排序,则反转计数为最大值。形式上来说,如果 a[i] > a[j] 且 i < j,则两个元素
假设我有两座建筑物,我可以在其中 build 不同的单元。一个建筑物只能同时 build 一个单元,但有一个最多 5 个单元的 fifo 队列,它们将按顺序 build 。每个单元都有构建时间。我需要
我正在执行一个查询并从数组中的数据库中获取以下数据(MySql2 类型对象): +-----------+---------------+---------------+------+------+
在 ghci 中: λ> :t (pure 1) (pure 1) :: (Applicative f, Num a) => f a λ> show (pure 1) :1:1: No ins
在这种特殊情况下,我不会让 file_get_contents() 返回页面,其中 url 包含一个“Ö”字符。 $url = "https://se.timeedit.net/web/liu/db1
这是我的字符串10000000000000000000000000000000000000000000000000000000000 与 60 1/0 组合的字符串。 我想把它放入一个 int Arr
你好, 我有以下代码: 43 while (TRUE) 44 { 45 printf("Swipe Card: "); 46 scanf("%s
我正在寻找在多项式时间内解决的 3-SAT 特例及其算法。任何链接? 谢谢。 最佳答案 阅读 Thomas J Schaeffer 的优秀(但有点难以阅读)论文:The Complexity of S
我正在清理我的一个旧项目。它必须做的一件事是——给定笛卡尔网格系统和网格上的两个正方形,找到所有正方形的列表,连接这两个正方形中心的线将通过这些正方形。 这里的特殊情况是所有起点和终点都被限制在正方形
如果你在“alloc.c”中有如下代码: typedef __typeof__(sizeof(int)) size_t; extern void *calloc (size_t __nmemb, si
我在 Ruby 中有一个数组,其值如下 xs = %w(2.0.0.1 2.0.0.6 2.0.1.10 2.0.1.5 2.0.0.8) 等等。我想对数组进行排序,使最终结果应该是这样的: ys =
关于将应用程序提交到 iOS AppStore,我遇到了一个非常独特的困境。 这是一款适用于 1.5 至 3 岁 child 的应用程序,该应用程序背后的想法是通过语音引导您学习动物名称和它们的声音。
我是一名优秀的程序员,十分优秀!