链接: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(ai−ai−1)2∑i=1n(ai−ai−1)2最大(公式的含义是:每个数与前一个数差的平方的和)

注意:我们默认a0=0a0=0

输入描述:

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

输出描述:

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

示例1

输入

复制

2
2 4

输出

复制

20

说明

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

示例2

输入

复制

3
2 0 4

输出

复制

36

说明

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

示例3

输入

复制

5
2 4 0 2 4

输出

复制

52

备注:

1⩽n⩽1051⩽n⩽105,保证aiai为2/0/42/0/4中的数

官方题解:

输入的序列其实用处不大,因为最终不需要输出方案,我们只需要记录下2/0/4分别出现的次数即可 一个显然的构造策略是首先放置4, 0, 4, 0,直到其中一个用光。 接下来如果4多余,那么可以按4,0,4,0,…,4,2,4,2,…(先4后2)的方法构造 如果0多余,可以按照4,0,4,0    …    4,0,2,0,2    …(先2后0)的方法构造 std中的a数组展示了其中一种最优的构造方案 实际上此题还可以推广到更一般的情况,也就是第一个位置放最大的,第二个位置放最小的,第三个位置放 第二大的以此类推,这种思路写起来也会更简单一些

自己写的时候用暴力一直WA,还是代码能力太差了。

这题就是贪心,先对数据排序,最大的数和最小的数差的平方,然后是第一个不大于最大的数和第一个不小于最小的数差的平方

代码如下:

#include<bits/stdc++.h>
using namespace std;
int a[100000];
int main()
{
int n;
cin>>n;
for(int i=1;i<=n;i++)
cin>>a[i];
a[0]=0;
int k=a[0];
int first=1,last=n;
long long sum=0;
sort(a+1,a+n+1);
while(first<=last)
{
if(first<=last)
{
sum+=pow(a[last]-k,2);
k=a[last];
last-=1;
}
if(first<=last)
{
sum+=pow(a[first]-k,2);
k=a[first];
first+=1;
}
}
cout<<sum<<endl;
}

牛客寒假算法基础集训营1B题的更多相关文章

  1. 2020牛客寒假算法基础集训营2 J题可以回顾回顾

    2020牛客寒假算法基础集训营2 A.做游戏 这是个签到题. #include <cstdio> #include <cstdlib> #include <cstring ...

  2. 2020牛客寒假算法基础集训营1 J题可以回顾回顾

    2020牛客寒假算法基础集训营1 这套题整体来说还是很简单的. A.honoka和格点三角形 这个题目不是很难,不过要考虑周全,面积是1,那么底边的长度可以是1也可以是2, 注意底边1和2会有重复的, ...

  3. Applese 的毒气炸弹 G 牛客寒假算法基础集训营4(图论+最小生成树)

    链接:https://ac.nowcoder.com/acm/contest/330/G来源:牛客网 Applese 的毒气炸弹 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 262 ...

  4. 牛客寒假算法基础集训营3B 处女座的比赛资格(用拓扑排序解决DAG中的最短路)

    链接:https://ac.nowcoder.com/acm/contest/329/B 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言5242 ...

  5. 牛客寒假算法基础集训营4 I题 Applese 的回文串

    链接:https://ac.nowcoder.com/acm/contest/330/I 来源:牛客网 自从 Applese 学会了字符串之后,精通各种字符串算法,比如--判断一个字符串是不是回文串. ...

  6. 牛客寒假算法基础集训营4 I Applese 的回文串

    链接:https://ac.nowcoder.com/acm/contest/330/I来源:牛客网 自从 Applese 学会了字符串之后,精通各种字符串算法,比如……判断一个字符串是不是回文串. ...

  7. 牛客寒假算法基础集训营2 【处女座与复读机】DP最小编辑距离【模板题】

    链接:https://ac.nowcoder.com/acm/contest/327/G来源:牛客网 一天,处女座在牛客算法群里发了一句“我好强啊”,引起无数的复读,可是处女座发现复读之后变成了“处女 ...

  8. 欧拉函数-gcd-快速幂(牛客寒假算法基础集训营1-D-小a与黄金街道)

    题目描述: 链接:https://ac.nowcoder.com/acm/contest/317/D来源:牛客网小a和小b来到了一条布满了黄金的街道上.它们想要带几块黄金回去,然而这里的城管担心他们拿 ...

  9. 牛客寒假算法基础集训营3处女座和小姐姐(三) (数位dp)

    链接:https://ac.nowcoder.com/acm/contest/329/G来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言52428 ...

随机推荐

  1. HDU 5480:Conturbatio 前缀和

    Conturbatio Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Tota ...

  2. Jetson TX2 安装JetPack3.3教程

    Jetson TX2 刷机教程(JetPack3.3版本) 参考网站:https://blog.csdn.net/long19960208/article/details/81538997 版权声明: ...

  3. discuz伪静态问题(简单)

    提前声明一下我用的是宝塔面板.Linux系统.Nginx Web Server.经过一上午的摸索(我很菜了),终于在一个很无语的地方成功搞了伪静态1.2.点击查看当前的 Rewrite 规则3.我的是 ...

  4. java课程课后作业190616之个人学期总结

    在团队开始的那一周,我们做了作品的功能畅想,在讲台上谈论了自己的产品可能会有的功能,比如说课程查找功能,空教室查找功能,霸屏功能,课程留言功能等,当然,随着开发的推进,我也发现了有些功能上实现的困难, ...

  5. DBUtils模版CRUD

    准备:导包 1.创建c3p0-config.xml配置文件放在src下 <?xml version="1.0" encoding="UTF-8"?> ...

  6. cf1200 D White Lines(二维差分)

    题目大意 有一个大小为n的矩阵,每个1*1的单位为黑或白,我们可以用一个(只有一个)大小为k*k的白色矩阵覆盖,问:最多的时候有几条白线(横的全为白 或竖的全为白 即为白线). 思路 要想把一条线(以 ...

  7. 51nod 1392:装盒子 匈牙利+贪心

    1392 装盒子 基准时间限制:1 秒 空间限制:131072 KB 分值: 160 难度:6级算法题  收藏  关注 有n个长方形盒子,第i个长度为Li,宽度为Wi,我们需要把他们套放.注意一个盒子 ...

  8. markdown使用介绍

    一.标题,前面加#,加一个 一级标题,两个二级标题,以此类推. 一级标题 二级标题 三级标题

  9. SpringCloud学习之Ribbon使用(四)

    1.关于 Ribbon Spring Cloud Ribbon 是基于 Netflix Ribbon 实现的一套客户端负载均衡的工具.Ribbon 是 Netflix 发布的开源项目,主要功能是提供客 ...

  10. 应用架构的演进--MVC,RPC,SOA,微服务架构

    MVC架构:垂直应用架构 当访问量逐渐增大,单一应用增加机器带来的加速度越来越小,将应用拆成互不相干的几个应用,以提升效率. 当业务规模很小时,将所有功能都部署在同一个进程中,通过双机或者前置负载均衡 ...