Commando War(UVa 11729)

来源:互联网 发布:淘宝飞利浦官方旗舰店 编辑:程序博客网 时间:2024/05/18 16:38

题意:

你有n个部下,你要给每个部下分配任务,分配任务的时间为B,部下执行任务的时间为J。不能同时分配多个任务,但部下执行任务的时候你可以给其它部下分配任务。求怎么分配任务的时间最短(所有任务的要分配守和执行完)

思路:

把部下执行任务的时间排降序,循环加上给部下分配任务的时间。当循到第i个部下时,判断1到i个部下分配任务的时间加上第i个部的执行任务的是否为最大值。

#include <iostream>#include <cstdio>#include <algorithm>using namespace std;struct str{    int a,b;};bool cmp(str str1,str str2 ){    if(str1.b>str2.b)        return true;    return false;}int main(){    int N;    int Case=0;    while(cin>>N&&N)    {        str job[N];        for(int i=0;i<N;i++)            cin>>job[i].a>>job[i].b;        sort(job,job+N,cmp);        int sum=0;        int temp=0;        for(int i=0;i<N;i++)        {            sum+=job[i].a;            temp=max(temp,sum+job[i].b);        }        printf("Case %d: %d\n",++Case,temp);    }}


0 0
原创粉丝点击