zoukankan      html  css  js  c++  java
  • 小a与“204”------数列、排序

    链接:https://ac.nowcoder.com/acm/contest/317/B
    来源:牛客网

    小a非常喜欢204204这个数字,因为a+k=204′a′+′k′=204
    现在他有一个长度为nn的序列,其中只含有2,0,42,0,4这三种数字
    aiai为序列中第ii个数,你需要重新排列这个数列,使得ni=1(aiai1)2∑i=1n(ai−ai−1)2最大(公式的含义是:每个数与前一个数差的平方的和)
    注意:我们默认a0=0a0=0

    输入描述:

    第一行一个整数nn
    接下来一行nn个整数,第ii个数表示aiai

    输出描述:

    输出一个整数,表示ni=1(aiai1)2∑i=1n(ai−ai−1)2的最大值
    示例1

    输入

    复制
    2
    2 4

    输出

    复制
    20

    说明

    样例1解释:按(4,2)(4,2)排列是最优的,此时sum=(40)2+(24)2=20sum=(4−0)2+(2−4)2=20
    示例2

    输入

    复制
    3
    2 0 4

    输出

    复制
    36

    说明

    样例2解释:按(4,0,2)(4,0,2)排列是最优的,此时sum=(40)2+(04)2+(20)2=36sum=(4−0)2+(0−4)2+(2−0)2=36
    示例3

    输入

    复制
    5 
    2 4 0 2 4

    输出

    复制
    52

    备注:

    1n1051⩽n⩽105,保证aiai2/0/42/0/4中的数

    注:依次把第一大和第二大的数存入数组,依次类推,在按公式计算。
    #include<iostream>
    #include<algorithm>
    using namespace std;
    bool cmp(int a ,int b)
    {
      return a>b;
    }
    int a[1000000],b[1000000];
    int main()
    {
      int n,m=0;
      scanf("%d",&n);
      for(int i=0;i<n;i++)
      {
        cin>>a[i];
      }
      sort(a,a+n,cmp);
      int j=0;
      b[0]=0;
      for(int i=0;i<n;i++)
      {
        if(i%2==0)
          {
            b[i+1]=a[j];
            j++;
          }
        else
          b[i+1]=a[n-j];
      }
      for(int i=1;i<=n;i++)
      {
        //cout<<b[i]<<" ";
        m=m+(b[i]-b[i-1])*(b[i]-b[i-1]);
      }
      printf("%d
    ", m);
    
    }
    
    
    
     

    链接:https://ac.nowcoder.com/acm/contest/317/B
    来源:牛客网

    小a非常喜欢204204这个数字,因为a+k=204′a′+′k′=204
    现在他有一个长度为nn的序列,其中只含有2,0,42,0,4这三种数字
    aiai为序列中第ii个数,你需要重新排列这个数列,使得ni=1(aiai1)2∑i=1n(ai−ai−1)2最大(公式的含义是:每个数与前一个数差的平方的和)
    注意:我们默认a0=0a0=0

    输入描述:

    第一行一个整数nn
    接下来一行nn个整数,第ii个数表示aiai

    输出描述:

    输出一个整数,表示ni=1(aiai1)2∑i=1n(ai−ai−1)2的最大值
    示例1

    输入

    复制
    2
    2 4

    输出

    复制
    20

    说明

    样例1解释:按(4,2)(4,2)排列是最优的,此时sum=(40)2+(24)2=20sum=(4−0)2+(2−4)2=20
    示例2

    输入

    复制
    3
    2 0 4

    输出

    复制
    36

    说明

    样例2解释:按(4,0,2)(4,0,2)排列是最优的,此时sum=(40)2+(04)2+(20)2=36sum=(4−0)2+(0−4)2+(2−0)2=36
    示例3

    输入

    复制
    5 
    2 4 0 2 4

    输出

    复制
    52

    备注:

    1n1051⩽n⩽105,保证aiai2/0/42/0/4中的数
  • 相关阅读:
    mysql 定时器
    mysql 存储过程记录
    mysql 常用sql
    mysql 取最后一条数据 分组
    Java8 Stream使用flatMap合并List 交 并 合 差集
    微服务技术栈
    spring boot 拦截 以及Filter和interceptor 、Aspect区别
    在springMVC的controller中获取request,response对象的一个方法
    spring boot 用@CONFIGURATIONPROPERTIES 和 @Configuration两种方法读取配置文件
    SSRS 2016 Forms Authentication
  • 原文地址:https://www.cnblogs.com/-citywall123/p/10305970.html
Copyright © 2011-2022 走看看