Roundgod and Milk Tea(多校8 ,1011 )贪心

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6667

思路:求个sum总和,另外再设个变量s=sum;

for循环遍历过去 第i个的时候 他可以喝h=min(a【i】,sum-b【i】)杯奶茶 ,

每次用s减去喝掉的 当s<0的时候代表没有足够的可以喝了 h就赋值为剩下的奶茶数量

ans每次累加h的值

#include<bits/stdc++.h>
using namespace std;
#define ll long long
ll a[1000005],b[1000005];
int main()
{
    int i,j,n,m,t;
    scanf("%d",&t);
    while(t--)
    {
        scanf("%d",&n);
        ll sum=0;
        for(i=1;i<=n;i++)
        {
            scanf("%lld%lld",&a[i],&b[i]);
            sum+=b[i];
        }
        ll s=sum;
        ll ans=0;
        for(i=1;i<=n;i++)
        {
            ll wai=sum-b[i];//除了自己的,外面有多少奶茶
            int h=min(wai,a[i]);//可以喝的
            if(s-h<0)h=s;//不够了 h就赋值为剩下的奶茶数量
            s-=h;
            ans+=h;//累加
        }
        cout<<ans<<endl;
    }
    return 0;
}

 

posted @ 2019-08-14 20:46  -第4题-  阅读(338)  评论(0编辑  收藏  举报