【题解】
题意:每个班的学生有ai人,生产的奶茶有bi杯,每个人最多只能喝一杯别的班生产的奶茶,问最多能有多少个学生喝到奶茶。
思路:保证本班的同学不喝自己班级的奶茶,且总和不大于生产的奶茶,即为答案。
【代码】
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e6+10;
#define ll long long
struct p{
ll a,b;
}f[maxn];
bool cmp(p a,p b)
{
return a.b<b.b;
}
ll s[maxn];
int main()
{
int t; scanf("%d",&t);
while(t--){
int n; scanf("%d",&n);
ll suma=0,sum=0;
for(int i=0;i<n;i++){
scanf("%d%d",&f[i].a,&f[i].b);
suma+=f[i].a;
}
for(int i=0;i<n;i++)
s[i]=suma-f[i].a;
for(int i=0;i<n;i++)
sum+=min(s[i],f[i].b); //保证本班同学不喝自己班的奶茶
printf("%lld\n",min(sum,suma)); //不大于总的生产的奶茶
}
return 0;
}