2010年11月20日
摘要: 题意是有N行任务,给出完成每项任务所需要的时间长度,求出完成所有任务所需要的最短时间.每个任务都会有一个约束条件,就是在完成这项任务之前必须完成所列出的其它任务.可以同时做多项任务.简单来说就像煮饭炒菜问题一样,可以一边烧饭一边炒菜.但炒菜之前必先洗菜. 这道题我主要用了最小优先队列,有点像dijktra, 列队按两个条件来维护, 首先是所按所需的条件(前任务)个数,这里用Need[]数组保存,然后按开始任务的时间. 用一个Need[]数组维护每个任务所需的前任务个数,如果为0, 则丢进列队里, 每次取出列队首元素, 即当前可以开始的任务, 将所有以这一任务为前提的任务的Need减一,再更新. 阅读全文
posted @ 2010-11-20 14:42 Kenfly 阅读(589) 评论(0) 推荐(0) 编辑