POJ 2751 Saving Endeavour

来源:互联网 发布:motion graphic软件 编辑:程序博客网 时间:2024/06/04 20:39

题意:n个零件,需要经过两道工序,工序不能颠倒,且只能有一个零件在一道工序上加工,求最快时间。

题解:贪心,推导公式然后排序即可。

#include<cstdio>#include<cstring>#include<algorithm>using namespace std;struct Data{    int a,b;}po[10005];bool comp(Data x,Data y){    return x.a+max(y.a,x.b)+y.b<y.a+max(x.a,y.b)+x.b;}int main(){    int n;    while(scanf("%d",&n),n)    {        for(int i=0;i<n;i++)            scanf("%d%d",&po[i].a,&po[i].b);        sort(po,po+n,comp);        int ans1=0,ans2=0;        for(int i=0;i<n;i++)        {            ans2=max(ans1+po[i].a,ans2)+po[i].b;            ans1+=po[i].a;        }        printf("%d\n",ans2);    }    return 0;}


原创粉丝点击