时间限制1.00s 内存限制256.00MB 难易度:普及/提高−
【题目背景】
幻想乡,春。
新年的土地吐出稚嫩的幼芽,第一届幻想乡程序设计大赛(Inner-Gensokyo Programming Contest, IGPC)拉开帷幕。作为举办者, Cirno 却有些不得不考虑的事情。
那就是气球的分配问题。
【题目描述】
本场比赛共有 n 道题,Cirno 已经精确预测了每道题目的 AC 队伍数 a1,a2,a3,⋯,an。但由于经费限制,主办方 n 种颜色的气球分别只准备了b1,b2,b3,⋯,bn 个。
而 Cirno 需要合理地安排每道题目对应的气球颜色,使得能派发的气球尽可能多。
显然地,每道题目只能对应一种颜色的气球,每种颜色的气球只能对应一道题目,如果一道题有队伍通过但该种颜色的气球已经发完了,则很遗憾,该队拿不到这种气球了。
由于这个问题过于 trival,于是 Cirno 决定将这个任务分配给你。
【输入格式】
第一行,一个整数 n。
第二行,n 个整数,用空格隔开,表示 {an}。
第三行,n 个整数,用空格隔开,表示 {bn}。
【输出格式】
一行,一个整数,表示最多能派发的气球数。
【输入输出样例】
输入 #1
5 1 2 3 4 5 2 3 3 3 3
输出 #1
12
【说明/提示】
数据范围与约定
对于 100% 的数据保证 1≤n≤10^5,0≤ai,bi≤10^4,且 {an},{bn} 单调不降。
子任务
Subtask1(60 points):n≤8。
Subtask2(40 points):无特殊限制。
【算法分析】
这绝对是我目前遇到的最水的洛谷黄题,难度快和橙或红题差不多了。
如果通过的队伍少,但气球多,只能派发出通过队伍数量的气球;如果气球少,但通过的队伍多,也只能派发出原有气球的数量。所以每道题目派发出去的气球是气球数与通过队伍数之中较少的那个。我们只需要用min函数比较,即可解出此题。
【参考代码】
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin>>n;
int a[n],b[n];
for(int i=0;i<n;i++)
cin>>a[i];
int cnt=0;
for(int i=0;i<n;i++)
{
cin>>b[i];
cnt+=min(a[i],b[i]);
}
cout<<cnt;
return 0;
}