P8109 题解

题目传送门

小学生又双叒叕来写题解啦!

题意简单地说,就是:将两个数组用某种方法排列后,上下比较取最小值,问这些最小值的和的最大值是几。

比赛时看到子任务一,就直接无脑深度优先搜索将六十分拿了。

由于部分分的解比正解还难,代码就不给出来了,反正我拿六十分到手了。


不说废话,思考正解。

注意到数组都是有序的,这是否有什么含义呢?

利用贪心的策略,加上随机样例的测试,直接上下比对是最优的!

也就是说,让同一个队伍的人都去完成对应的题即可!

送上满分代码:

#include <iostream>
#include <cstdio>
using namespace std;
int n, a[N], b[N], 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]);
	for (int i = 1; i <= n; i++) ans += min(a[i], b[i]);  
	//直接对应着算。 
	printf("%d", ans);
	return 0;
}

首发:2022-02-06 15:31:42

posted @ 2022-08-25 00:16  liangbowen  阅读(11)  评论(0编辑  收藏  举报