蓝桥杯 - [算法提高VIP]最小乘积(贪心)
发布日期:2021-07-01 00:18:30
浏览次数:2
分类:技术文章
本文共 826 字,大约阅读时间需要 2 分钟。
题目链接:
时间限制:1.0s 内存限制:512.0MB问题描述
给两组数,各n个。
请调整每组数的排列顺序,使得两组数据相同下标元素对应相乘,然后相加的和最小。要求程序输出这个最小值。 例如两组数分别为:1 3 -5和-2 4 1 那么对应乘积取和的最小值应为: (-5) * 4 + 3 * (-2) + 1 * 1 = -25输入格式
第一个行一个数T表示数据组数。后面每组数据,先读入一个n,接下来两行每行n个数,每个数的绝对值小于等于1000。
n< =1000,T< =10输出格式
一个数表示答案。
样例输入
2
3 1 3 -5 -2 4 1 5 1 2 3 4 5 1 0 1 0 1
样例输出
-25
6
解题思路
贪心,即为找到整体最优解,而去找局部最优解。显然最大值乘以最小值才能使乘积和最小。
#includeusing namespace std;int a[1005], b[1005];int main() { int n, t, ans; scanf("%d", &t); while (t--) { ans = 0; scanf("%d", &n); for (int i = 0; i < n; i++) scanf("%d", a + i); for (int i = 0; i < n; i++) scanf("%d", b + i); sort(a, a + n); sort(b, b + n); for (int i = 0; i < n; i++) ans += a[i] * b[n - i - 1]; printf("%d\n", ans); } return 0;}
转载地址:https://lzyws739307453.blog.csdn.net/article/details/90319110 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
能坚持,总会有不一样的收获!
[***.219.124.196]2024年04月16日 17时50分13秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
java 8:只取年月日的java.util.Date(时分秒清零)对象
2019-05-01
Flink的一些核心概念与编程模型(3)
2019-05-01
Flink的一些核心概念与编程模型(4)
2019-05-01
Flink Runtime(5)
2019-05-01
Flink Runtime(6)
2019-05-01
Flink Runtime(7)--搭建非YARN的主从FLINK集群
2019-05-01
Flink Runtime(8)-- 创建Flink项目及依赖管理
2019-05-01
Flink Runtime(9)-- 自己编译Flink
2019-05-01
Flink Runtime(10)-- Flink编译报错集锦
2019-05-01
Flink API 通用基本概念(11)
2019-05-01
Flink DataStream API概述(12)
2019-05-01
Flink Operator概述(13)
2019-05-01
Flink Time概述(14)
2019-05-01
Flink Window概述(15)
2019-05-01
Flink Operators之CoGroup和Join概述(16)
2019-05-01
Flink Operators之Process Function(17)
2019-05-01