UVA 1467 Installations(贪心)

来源:互联网 发布:淘宝返利网都有哪些 编辑:程序博客网 时间:2024/05/21 19:35

思路:点击打开链接

#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int maxn=1000+10;struct node{    int s,d;}ti[maxn];int n,p;int cmp(node a,node b){    return a.d<b.d;}int deal(int x){    int sum=0,a=0,b=0;    for(int i=0;i<=p;i++)    {        if(i==x) continue;        sum+=ti[i].s;        int temp=max(sum-ti[i].d,0);        if(temp>a){            b=a;            a=temp;        }        else if(temp>b){            b=temp;        }    }    sum+=ti[x].s;    int temp=max(sum-ti[x].d,0);    if(temp>a){        b=a;        a=temp;    }    else if(temp>b){        b=temp;    }    return a+b;}int main(){    int  t;    scanf("%d",&t);    while(t--)    {        scanf("%d",&n);        for(int i=0;i<n;i++) scanf("%d%d",&ti[i].s,&ti[i].d);        sort(ti,ti+n,cmp);        int sum=0,a=0,b=0;        for(int i=0;i<n;i++)        {            sum+=ti[i].s;            int temp=max(sum-ti[i].d,0);            if(temp>a)            {                b=a;                a=temp;                p=i;            }            else if(temp>b)            {                b=temp;                p=i;            }        }        int ans=a+b;        for(int i=0;i<p;i++)            ans=min(ans,deal(i));        printf("%d\n",ans);    }    return 0;}


0 0
原创粉丝点击