这是一道模拟的题目。

我的思路是,用两个优先队列,一个是正在下载的文件的队列,另一个是等待下载的文件的队列。对于正在下载的文件队列,维护“所剩字节数最少的那个文件”在堆顶;对于等待下载的文件的队列,维护题目中所描述的那种最优先被下载的文件在堆顶。

然后循环,看正在下载的文件队列是否满,未满则将等待被下载的文件队列中的文件一个个弹出又插入到正在下载的队列。再看那个所剩字节最少的文件,让每个文件都减掉那么多字节,然后把那些字节为 0(即下载完了的)文件删掉,再把所需时间加到计数器。最后循环啊循环就好了。

这道题有一个阴险的地方是:

Print a blank line after the output of each test case.

害我 WA 了两次……

原创文章,转载请注明来源:http://euyuil.com/3232/acm-icpc-2009-wuhan-download-manager/