Better man

改变性格 改变命运!

 

usaco job

第一问比较简单,用贪心做就可以了。用now[i]记录A中机器工作的时间,初始时为0。每次使当前最大工作时间最小,即找到一个j使得 now[j]+t[j]最小,其中t是A中机器j完成一次操作的时间。让机器j完成这次操作,更新now[i],同时记录第i件工作被完成的时间 fin[i]。

贪心的证明比较容易,这里就不说了(反证)。

第二问初看似乎无从下手,我们不妨换个角度,把A和B独立开,换句话说,等A工作全部结束后B工作才开始,那么B和A是一样的,用贪心求出这时每件工作被完成的时间sta[i]。

fin和sta中的数是单调递增的,我们设想一下,把fin中最大的和sta中最小的数对应,记做某件工作完成的时间(因为所有工作都是一样的),fin中次大的和sta中次大的数对应,记做另一件工作完成的时间,依此类推。去所有的完成时间最大的就是问题二的解。

单调性

这个图可能更形象一些:

0 && image.height>0){if(image.width>=700){this.width=700;this.height=image.height*700/image.width;}}" src="http://photo.hexun.com/p/2006/0131/9642/b_15D7B52B56948D55.jpg" alt="查看更多精彩图片" border="0">

posted on 2009-02-01 22:15 SHFACM 阅读(210) 评论(0)  编辑 收藏 引用 所属分类: ACM


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


导航

统计

常用链接

留言簿(2)

随笔档案

文章分类

文章档案

搜索

最新评论

阅读排行榜

评论排行榜