P8109题解

shaoziqi

2022-02-11 20:54:21

Solution

**本题原题目摘录**: > 本场比赛共有 $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; } ``` 不要急着抄,记得理解。