P8109 [Cnoi2021]幻想乡程序设计大赛 题解

因为 \(\{a_n\},\{b_n\}\) 单调不下降,即都已经排好序,直接从小到大依次比较就行了。

我们可以考虑先求出所有的气球数,减去不能派发的气球数,得出能派发的气球数。

当 \(b_i > a_i\) 时,即分发的气球有多的时,需要从气球总和中减去多余的气球,具体可以见代码。

#include<bits/stdc++.h>
using namespace std;
int n, a[100005], b[100005], ans; 
int main() {
	scanf("%d", &n);
	for(int i = 1; i <= n; i++) scanf("%d", &a[i]);
	for(int i = 1; i <= n; i++) scanf("%d", &b[i]), ans += b[i];
	for(int i = 1; i <= n; i++)
		if(b[i] > a[i]) ans -= b[i] - a[i];
	printf("%d\n", ans);
	return 0;
}
上一篇:iOS内存管理编程指南


下一篇:centos6.5环境下zookeeper-3.4.6集群环境部署及单机部署详解