zoukankan      html  css  js  c++  java
  • 蓝桥杯 算法训练 最小乘积(基本型) (水题,排序)

    算法训练 最小乘积(基本型)  

    时间限制:1.0s   内存限制:512.0MB
        
    问题描述
      给两组数,各n个。
      请调整每组数的排列顺序,使得两组数据相同下标元素对应相乘,然后相加的和最小。要求程序输出这个最小值。
      例如两组数分别为:1 3  -5和-2 4 1

      那么对应乘积取和的最小值应为:
      (-5) * 4 + 3 * (-2) + 1 * 1 = -25
    输入格式
      第一个行一个数T表示数据组数。后面每组数据,先读入一个n,接下来两行每行n个数,每个数的绝对值小于等于1000。
      n<=8,T<=1000
    输出格式
      一个数表示答案。
    样例输入
    2
    3
    1 3 -5
    -2 4 1
    5
    1 2 3 4 5
    1 0 1 0 1
     
    样例输出
    -25
    6
     
      水题,排序
      思路:由题意很容易猜测到做法,将一组数正序排列,再将另一组数逆序排列,最后对应的数相乘得到的结果全部加起来就是最后要求的结果。
      代码:
     1 #include <iostream>
     2 #include <algorithm>
     3 using namespace std;
     4 bool cmp(int a,int b)
     5 {
     6     return a>b;
     7 }
     8 int main()
     9 {
    10     int T,i,n,sum,a[10],b[10];
    11     cin>>T;
    12     while(T--){
    13         cin>>n;
    14         for(i=1;i<=n;i++)
    15             cin>>a[i];
    16         for(i=1;i<=n;i++)
    17             cin>>b[i];
    18         sort(a+1,a+n+1);
    19         sort(b+1,b+n+1,cmp);
    20         sum = 0;
    21         for(i=1;i<=n;i++)
    22             sum+=a[i]*b[i];
    23         cout<<sum<<endl;
    24     }
    25     return 0;
    26 }

    Freecode : www.cnblogs.com/yym2013

  • 相关阅读:
    time 模块学习
    day 14 自定义模块,常用模块 time .datetime ,time 模块
    day 13 课后作业
    day 12 课后作业
    day 11课后作业
    树状数组最值
    hdu 1059 Dividing bitset 多重背包
    XVII Open Cup named after E.V. Pankratiev. XXI Ural Championship
    最长公共子序列板/滚动 N^2
    Uva 10635
  • 原文地址:https://www.cnblogs.com/yym2013/p/3746243.html
Copyright © 2011-2022 走看看