- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
注意:这是对 SWF 文件中有关排序记录的现实问题的抽象改写。解决方案将帮助我改进开源应用程序。
Bob 有一家商店,他想打折。他的商店有许多产品,并且他有一定数量的每种产品的库存。他还有一些货架上的价格标签(与产品数量一样多),价格已经印在上面。他可以在任何产品上贴上任何价格标签(他的整个产品库存中一件商品的单一价格),但是某些产品有额外的限制 - 任何此类产品不得比其他特定产品便宜。
您必须找到如何安排价格标签,使 Bob 所有商品的总成本尽可能低。总成本是每个产品的指定价格标签乘以该产品的库存数量的总和。
给定:
程序必须找到:
满足条件:
请注意,如果不是第一个条件,解决方案将是简单地按价格对标签进行排序,按数量对产品进行排序,然后直接匹配两者。
输入的典型值为 N,K<10000。在现实生活中,只有几个不同的价格标签 (1,2,3,4)。
这是为什么大多数简单的解决方案(包括拓扑排序)不起作用的一个例子:
您有 10 件商品,数量从 1 到 10,还有 10 个价格标签,价格从 1 美元到 10 美元。有一个条件:数量为 10 的商品不得比数量为 1 的商品便宜。
最优解是:
Price, $ 1 2 3 4 5 6 7 8 9 10
Qty 9 8 7 6 1 10 5 4 3 2
总费用为 249 美元。如果您将 1,10 对放在任一极端附近,则总成本会更高。
最佳答案
对于一般情况,该问题是 NP 完全问题。这可以通过减少 3 分区来显示(这仍然是一个强大的 NP 完全版本的 bin packing)。
令 w1, ..., wn 为 3 分区实例的对象权重,令 b 是 bin 大小,k = n/3 是允许填充的 bin 数量。因此,如果可以对对象进行分区,使得每个容器恰好有 3 个对象,则存在 3 分区。
为了减少,我们设置 N=kb 并且每个 bin 由相同价格的 b 价格标签表示(想想 Pi 每 b 个标签递增)。设ti, 1≤i≤k, 为对应标签的价格第 i 个箱子。对于每个 wi,我们有一个产品 Sj,数量为 wi + 1(我们称之为 wi 的根积)和另一个 wi - 1 数量 1 的产品,要求比 Sj 便宜(称这些为休假产品)。
对于ti = (2b + 1)i, 1≤i≤k ,当且仅当 Bob 可以卖出 2bΣ1≤i≤k 时,才有 3 分区 ti:
所以,这是破坏性的部分;-) 但是,如果不同价格标签的数量是常数,则可以使用动态规划在多项式时间内求解。
关于algorithm - 问题 : Bob's Sale,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4898511/
考虑Uncle Bob's Clean Architecture (或洋葱架构) 我有以下场景: 我想向用户展示一个地方的信息:名称、类别、坐标。 我还希望在同一个屏幕上有一个按钮,点击该按钮后会重定
因此,当我将php与MySQL结合使用时,我只是这样做了: $result = $mysqli->query("SELECT * FROM table WHERE person='Bob'"); 我现
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭 5 年前。 Improve
一周前,我观看了 Robert C. Martin 关于架构的演讲: http://www.youtube.com/watch?v=WpkDN78P884 我不明白您在 0:24:46 看到的图表。我
注意:这是对 SWF 文件中有关排序记录的现实问题的抽象改写。解决方案将帮助我改进开源应用程序。 Bob 有一家商店,他想打折。他的商店有许多产品,并且他有一定数量的每种产品的库存。他还有一些货架上的
我想知道我是否在使用 Clean Architecture正确的方式。我试图像这样放置它: 我读到包结构应该按用例排列,但我很难理解如何做到这一点。 让我们看看我的包结构: 请注意,我不知道将 Act
考虑 Uncle Bob's Clean Architecture (或洋葱架构) 假设作为我应用程序中的登录用户,我收到了一个深层链接 url “myapp://events/[event_id]”
Bob Jenkins 哈希函数是否有不区分大小写的变体? Generics.Defaults.BobJenkinsHash 提供快速哈希函数。不幸的是,它不能与不区分大小写的比较函数结合使用,如下所
我正在使用 jquery 在 LI 悬停时隐藏/显示 DIV。当我这样做时,div 出现了,但不停地上下弹出,直到我将鼠标从 LI 上移开。 $(document).ready(function ()
好吧,这看起来有点奇怪,但是当我尝试在 PHP 代码或 phpmyadmin 中运行 mysql 查询时,它不会返回任何内容: DELETE FROM `EmployeeNames` WHERE Fi
我已经在 CentOS 和 Python 级别上安装了所有必要的依赖项,并且认为我已经接近完成,但这就是我最后得到的。现在我不知道如何让它发挥作用。 Installed /tmp/easy_insta
这个问题在这里已经有了答案: String count with overlapping occurrences [closed] (25 个答案) 关闭 9 年前。 s = 'gfdhbo
我正在尝试使用通过 Conda 安装在我的 ubuntu 上的 bob 包;但是,在使用诸如 bob.measure.eer_threshold 之类的任何测量 API 时,会出现以下错误。我已经准备
Bob推荐其用户到install它的包使用conda , 但我不想使用 conda .如何从源代码安装它? 最佳答案 解释 首先,使用 conda 安装 Bob 要容易得多,并且是安装 Bob 的受支
考虑我在 hackerrank 上发现的这个问题: Coins Problem Alice and Bob were sitting in the sun; drinking orange juice
我想将数组元素传递给 bob bob.string.formatString 格式字符串,以便我可以传递任意数量的参数,并且它将自动填充占位符中所需的参数。这是我尝试过的。 var string =
如果我想从下面的字符串中提取值,正确的正则表达式(我可以在 Java 中使用)是什么? 我知道\将提取尖括号之间的所有内容,但我只需要提取“bob”。 字符串中唯一会改变的部分是“bob”。我还想确
在第 2 章:有意义的名称中,Bob 叔叔写道: Don't Add Gratuitous Context In an imaginary application called "Gas Statio
我正在构建一个 Bloom 过滤器并查看要使用的哈希值和 Bob Jenkins' hash由于分布均匀,这似乎是一个不错的选择。我将给定的 C++ 代码改编为 Go(可能犯了一个错误,但它似乎有效)
考虑: 用例层定义了一个接口(interface) public interface IGeocoder { Coordinate GetCoordinate(Address address)
我是一名优秀的程序员,十分优秀!