由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 问一道题目
进入Programming版参与讨论
1 (共1页)
p*****y
发帖数: 1049
1
有N个柜台,每个柜台处理的时间是固定的,但是不同的柜台处理的时间不一样。用
vector processTime 表示
我的前面有M个人在排队,请问我最少要等多久?算法复杂度是多少?
如果M>>N,有什么更快的办法?
s********d
发帖数: 162
2
M个人一个一个往柜台里放
每个人把每个柜台都试一遍找出最优解,这是N
全部排完是 M x N
当M >> N时, 找vector 里时间的最小公倍数
公倍数除以时间就可以放一批
一批一批放完后,
剩下的不够一批
再一个一个单独放
不知道对不对
欢迎指正

【在 p*****y 的大作中提到】
: 有N个柜台,每个柜台处理的时间是固定的,但是不同的柜台处理的时间不一样。用
: vector processTime 表示
: 我的前面有M个人在排队,请问我最少要等多久?算法复杂度是多少?
: 如果M>>N,有什么更快的办法?

p*****y
发帖数: 1049
3
可以优化到 M log N

【在 s********d 的大作中提到】
: M个人一个一个往柜台里放
: 每个人把每个柜台都试一遍找出最优解,这是N
: 全部排完是 M x N
: 当M >> N时, 找vector 里时间的最小公倍数
: 公倍数除以时间就可以放一批
: 一批一批放完后,
: 剩下的不够一批
: 再一个一个单独放
: 不知道对不对
: 欢迎指正

s********d
发帖数: 162
4
具体怎么做,可以说说么?

【在 p*****y 的大作中提到】
: 可以优化到 M log N
d***a
发帖数: 13752
5
这是给大家出的考题?
用堆就可以了。把柜台按下一次服务结束时间来构建堆,每一步从堆顶取出一个柜台,
增加服务时间后再放回堆。每步时间复杂度为log(N),一共做M步,总的复杂度是
M log(N)。

【在 p*****y 的大作中提到】
: 可以优化到 M log N
A***g
发帖数: 1816
6
这是线性方程组,数学上是有解析解的,
S**********A
发帖数: 1
7
可以用贪心法做
3-approximate

【在 p*****y 的大作中提到】
: 有N个柜台,每个柜台处理的时间是固定的,但是不同的柜台处理的时间不一样。用
: vector processTime 表示
: 我的前面有M个人在排队,请问我最少要等多久?算法复杂度是多少?
: 如果M>>N,有什么更快的办法?

1 (共1页)
进入Programming版参与讨论