[贪心] OpenJudge nnsz 001任务调度

这道题目探讨了在无法根据时间先后判断任务优先级的情况下,如何进行任务调度。错误的方法是根据任务完成时间和代价排序,而正确解法是先按完成时间排序,然后在放入任务时检查当前时间是否早于任务的完成时间,如果早则替换代价更小的任务。通过这种方式,实现了优化任务调度的贪心策略。
摘要由CSDN通过智能技术生成
原题:

总时间限制:


10000ms
内存限制:
30720kB
描述
一个单位时间任务是一个作业,如要在计算机上运行一个程序,它恰覆盖一个单位的运行时间。给定一个单位时间任务的集合S,对S的一个调度即S的一个排列,其中规定了这些任务的执行顺序。该调度中的第一个任务开始于时间0,结束于时1;第二个任务开始于时间1, 结束于时间2;……。单处理器上具有期限和罚款的单位时间任务调度问题的输入如下:
1.包含n个单位时间任务的集合S={1,2,……,n};
2.n个取整的期限d1,……,dn,(1≤d,≤n),任务i要求在di前完成;
3.n个非负的权(或罚款)w1,……,wn。如果任务i没在时间di之前结束,则导致罚款wi;
要求找出S的一个调度,使之最小化总的罚款。
输入
输入第一行为N<=1000,后面N行每行两个数,即为对应的di与wi。(wi<=1000)
输出
输出最小总罚款
样例输入
5
1 4
2 4
2 8
3 8
5 2
样例输出
4


这题花了我蛮长时间,一开始想法错了(用结构

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值