C/C++每日小练(五)——突击战

解决一个关于部下任务分配的问题,目标是最小化所有任务完成的时间。每名部下有交代任务时间和执行任务时间,需要按照贪心策略,即执行时间长的任务优先交代。通过排序并逐一交代任务,实现最短时间完成所有任务。给出样例输入和输出,展示算法应用。
摘要由CSDN通过智能技术生成

突击战

你有n个部下,每个部下需要完成一项任务。第i个部下需要你花Bi分钟交代任务,然后他会独立地、无间断地执行Ji分钟后完成任务。你需要选择交代任务的顺序,使得所有任务尽早执行完毕(即最后一个执行完的任务应尽早结束)。注意,不能同时给两个部下交代任务,但部下们可以同时执行他们各自的任务。


输入格式:

输入包含多组数据,每组数据的第一行为部下的个数N(1<=n<=1000);以下N行每行两个正整数B和J(1<=B<=10000,1<=J<=10000),即交代任务的时间和执行任务的时间。输入结束表示为N=0。

输出格式:

对于每组数据,输出所有任务完成的最短时间。


样例输入:

3

2 5

3 2

2 1

3

3 3

4 4

5 5

0

样例输出:

Case 1: 8

Case 2: 15


解:这是一个简单地贪心算法的应用——执行时间较长的任务先交代(选择两个任务执行时,顺序不同而导致总时间不同,在讨论选择两个任务哪个先执行的问题上,可以看出,由于两个任务交代的时间B是固定的,所以仅仅比较两个任务的执行时间J即可),所以要按照J从小到大的顺序给各个

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值