您的位置:首页 > 其它

zcmu 1018

2017-05-10 19:58 225 查看

1018: 突击战

Time Limit: 1 Sec  Memory Limit:
128 MB
Submit: 602  Solved: 201

[Submit][Status][Web
Board]

Description

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

Input

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

Output

对于每组数据,先输出“Case #: ”(‘#’表示第几组数据),然后是所有任务完成的最短时间。

Sample Input

32 53 22 133 34 45 50

Sample Output

Case 1: 8Case 2: 15

HINT

对于Sample里的第一组数据,你给部下交待任务的顺序应该是1,2,3得到最早的完成时间是8;

第二组数据,你给部下交待任务的顺序应该是3,2,1得到最早的完成时间是15。

如果你一直是RT 不要怀疑,把数组开打一个数量级就好了,题目虽然写了1000,但是后台数据应该是超过了1000,然后一直导致RTRTRTRTRT.......坑,水坑ss

#include<cstdio>
#include<cmath>
#include<algorithm>
#include<cstring>
using namespace std;
struct work{
int fen;
int zuo;

}ren[10001];
bool cmp (work a,work b){
return a.zuo>b.zuo;

}
main (){
int n,count =1;
while(~scanf("%d",&n)&&n){
for(int i=0;i<n;i++)
scanf("%d %d",&ren[i].fen,&ren[i].zuo);
sort(ren,ren+n,cmp);
int sum=0,ans=0;
for(int i=0;i<n;i++)
{
ans+=ren[i].fen;
if(ans+ren[i].zuo>sum)
sum=ans+ren[i].zuo;
}
printf("Case %d: %d\n",count++,sum);

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ACM OJ zcmu