高效的任务规划
标题:高效的任务规划 | 时间限制:1秒 | 内存限制:32768K | 语言限制:不限
你有n台机器编号为1~n,每台都需要完成完成一项工作,机器经过配置后都能完成独立完成一项工作。假设第i台机器你需要花Bi分钟进行设置,然后开始运行,Ji分钟后完成任务。现在,你需要选择布置工作的顺序,使得用最短的时间完成所有工作。注意,不能同时对两台进行配置,但配置完成的机器们可以同时执行他们各自的工作。
#include <bits/stdc++.h>
using namespace std;
int n;
struct stTemp
{
int AA;
int BB;
}stA[1001]={};
bool cmp(stTemp a,stTemp b)
{
return a.BB > b.BB;
}
int main()
{
int cnt;
cin >> cnt;
while(cnt--)
{
cin >> n;
//异常处理
if (n==0){
return 0;
}
for (int i = 1;i<=n;i++){
scanf("%d%d",&stA[i].AA,&stA[i].BB);
}
//排序
sort(&stA[1], &stA[n + 1], cmp);
int tmmp1 = stA[1].AA;
int ret = stA[1].AA + stA[1].BB;
for (int i = 2; i<= n; i++){
tmmp1 += stA[i].AA;
ret = (ret > tmmp1 + stA[i].BB)? ret: stA[i].BB + tmmp1;
}
printf("%d\n", ret);
}
return 0;
}
m = int(input()) while m > 0 : m-=1 n = int(input()) a = [] for i in range(n): x,y = map(int, input().split()) a.append([y,x]) a.sort(reverse=True) ans = 0 now = 0 for y,x in a: now+=x ans=max(ans, now+y) print(ans) //manfen