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