P8109题解

· · 题解

本题原题目摘录

本场比赛共有 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 队伍数大于气球数量时,最多可以分配的气球自然就是气球的数量

那么这里的代码实现就是:

zh+=min(a[i],b[i]);

这里的 min 函数就是用来实现上述的两种分配可能的。

以下是 AC 代码:

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

不要急着抄,记得理解。