P8109题解
shaoziqi
2022-02-11 20:54:21
**本题原题目摘录**:
> 本场比赛共有 $n$ 道题,Cirno 已经精确预测了每道题目的 AC 队伍数 $a_1$ , $a_2$ , $a_3$ ... $a_n$ 。但由于经费限制,主办方 $n$ 种颜色的气球分别只准备了个 $b_1$ , $b_2$ , $b_3$ ... $b_n$ 。
首先,定义两个 $1e5+1$ 的数组以及一个 $zh$ 变量计算**最多分配气球数量的总和**。
根据题意分析可得:
1. 当**气球数大于 AC 队伍数**时,最多可以分配的气球自然就是 **AC 的队伍数量**;
2. 当 **AC 队伍数大于气球数量**时,最多可以分配的气球自然就是**气球的数量**。
那么这里的代码实现就是:
```cpp
zh+=min(a[i],b[i]);
```
这里的 $min$ 函数就是用来实现**上述的两种分配可能**的。
以下是 AC 代码:
```cpp
#include <bits/stdc++.h>
using namespace std;
const int N=1e5+1;
int a[N],b[N];
inline int read() //快读函数实现
{ //这里是模板,在平时优化代码时可以用到,建议收录
char ch=getchar();
long long f=1,res=0;
while(ch<'0'||ch>'9')
{
if(ch=='-') f=-1;
ch=getchar();
}
while(ch>='0'&&ch<='9')
res=(res<<1)+(res<<3)+ch-48,ch=getchar();
return res*f;
}
int main()
{
int n;
long long zh=0;
ios::sync_with_stdio(false);
n=read(); //快读函数的调用
for(int i=1;i<=n;i++){
a[i]=read();
}
for(int i=1;i<=n;i++){
b[i]=read();
zh+=min(a[i],b[i]); //实现两种可能的分配 防作弊标识~
}
cout<<zh<<endl;
return 0;
}
```
不要急着抄,记得理解。