O興~
 
« 上一篇: 2008 暑期练习赛,小小总结一下 下一篇: 央视《欢乐中国行》到我们学校来了 »
我很懒的 @ 2008-08-13 19:11

    贪心算法啊,以前老是以为它没什么技术含量,上不了台面。长时间下来,也就养成了“不可能是贪心这么简单”的思维习惯,遇到问题时几乎不会往贪心的方向想。

    可是谁料到最近一下就被我碰到了两道贪心题,改变了我对贪心的观点。其中一题我在上一篇就讲过了,是 2008 年 TUDPC 的第 E 题。还有一题就是 PKU 3110

    题意是说有 N 门考试(N ≤ 50,000),各门考试的日期跨度大约不超过 73,000 天(这个故事好像有点不符合现实,但是毕竟是题目嘛);每门课都需要一天的时间复习;两门课不能在同一天复习;有考试的日期不能复习功课;每门考试都有一个复习的时间下限,即复习的日期不能早于考试的前若干天,否则到考试时会忘掉;如果要通过所有考试,问可以最晚开始复习的日期(即第一个复习的日期要尽量的晚)是哪天。

    我开始还在往最大匹配上想,每门考试是左边的一个节点,每个日期是右边的一个节点,每门考试对应有限的几个日期,每个日期只能有一门考试。整个模型乍看有点像样,但是看看数据规模就知道不可能了。况且这样算不出最晚开始复习的日期。

    后来得知了可以用贪心解决,算法很简单:把所有考试从晚到早排序,从最晚的考试日期开始倒数;如果当天有考试,则把这些考试的复习时间下限放进一个优先队列;如果当天没有考试,则从优先队列里取出下限最晚的一个,把它复习掉;如果从优先队列里出来的这个时间下限已经比当天晚了,则无解。

    不难证明,这样得到的是最优解。假设一天没有考试,优先队列里时间下限最晚的一门考试是 A,但是当天没有复习这一门,而是复习了下限较早的考试 B。如果这样最终得到了最优解,那么,即然 A 的下限比 B 的晚,则互换 A 和 B 的复习日期是合法的,而且同样是最优解。也就是说,以上算法可以得到最优解。□

    以上这两道贪心的题目都是和工作流程之类的沾点边的,看来以后碰到这种题的时候要多长个心眼了。




评论 / 个人网页 / 扔小纸条
* 昵称

已经注册过? 请登录

新用户请先注册 以便能显示头像及追踪评论回复

Email
网址
* 评论
表情
 


 

分类小组论坛
杂谈 , 娱乐、八卦 , 文学、艺术 , 体育 , 旅游、同城 , 象牙塔 , 情感 , 时尚、生活 , 星座 , 科技

请注意遵守中华人民共和国法律法规, 如威胁到本站生存, 将依法向有关部门报告, 同时本站的相关记录可能成为对您不利的证据.

相关法律法规
全国人大常委会关于维护互联网安全的决定
中华人民共和国计算机信息系统安全保护条例
中华人民共和国计算机信息网络国际联网管理暂行规定
计算机信息网络国际联网安全保护管理办法
计算机信息系统国际联网保密管理规定

日历
网志分类
· 所有网志
· program
· 未分类
站内搜索
友情链接
· 歪酷博客
· 管理我的Blog
· jamie
· feemi
· lyrist
· tata
· allen
· richard

订阅 RSS

0081481

歪酷博客