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

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

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

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

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

ans每次累加h的值blog

#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; }