高效的任务规划

标题:高效的任务规划 | 时间限制: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



全部评论

相关推荐

肖先生~:那年秋招闯进一位少年,人们都清楚:成功对他来说只是时间问题
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务