2019杭电多校 第八场1011Roundgod and Milk Tea(6667)
题目
http://acm.hdu.edu.cn/showproblem.php?pid=6667
题意
给你数字n,表示有n个班,接下来n行有两个数据a,b分别表示班级人数和奶茶数目。
要求:每个班的同学都不能和自己班里的奶茶,每个人最多喝一杯奶茶,求喝奶茶最多的人数。
题解
模拟一下题意就可以了。将奶茶总和sum统计下来,每个人班的人数要是小于sum-b[i] (班级的奶茶数),那么他们班所有同学就可以喝到奶茶。否则就只有sum-b[i]个人能喝奶茶。最后取答案和sum的最小值就可以了。
AC代码
#include<iostream>
using namespace std;
#define ll long long
ll a[1000005];
ll b[1000005];
ll sum,ans;
int main()
{
int T,n;
scanf("%d",&T);
while(T--)
{
scanf("%d",&n);
sum=0,ans=0;
for(int i=0;i<m;i++)
{
scanf("%lld %lld",&a[i],&b[i]);
sum+=b[i];
}
for(int i=0;i<m;i++)
{
if(a[i]<=(sum-b[i]))
{
ans += a[i];
}
else
{
ans += sum - b[i];
}
}
printf("%lld\n",min(ans,sum));
}
return 0;
}