【发布时间】:2015-07-11 18:06:11
【问题描述】:
我在想这个:
一个市场有n 产品和m 卖家。对于每个卖家k,我们有三个(i,j,p):这意味着卖家以p的价格销售编号为i, i+1, .., j的产品。
目标:
找到市场上每种产品 (1..n) 的最低价格。您可以将产品的价格假设为没有卖家存在的无穷大。
示例:n=4, m=3,三个三元组是(1,3,4), (2,3,2), (3,4,1)。因此(1..4) 产品的最低值将是:(4, 2, 1, 1)。
O(nm) 解决方案很简单。我们可以在O(n+ mlogn)中使用二叉索引树进行范围更新和点查询。
谁能在O(nlogn) 中建议一种更简单的方法(可能是排序)?
【问题讨论】:
-
好像和Christmas Visit Nightmare!一样的解决方案,也就是here
-
@Sklivvz ,我认为这不是作业调度之类的问题。
-
我被你的问题弄糊涂了...如果
m很小,那么它自动是O(nlogn)。如果m很大,那么它必须出现在大O 中的某个地方……您至少需要阅读所有m卖家一次,对吧? -
m