题意:给你m个数,然后你选择一个数替换成别的数,使得.最小。注意选择的那个数在这m个数与它相同的数都必须替换同样的数。

思路:用vector记录每一个数与它相邻的数,如果相同不必记录,然后遍历替换成与它相邻的多个数的中位数之后的所有数的和取最小就可以。。

 1 #include <cstdio>
 2 #include <iostream>
 3 #include <cstring>
 4 #include <vector>
 5 #include <algorithm>
 6 #include <cmath>
 7 #define maxn 100010
 8 #define ll __int64
 9 using namespace std;
10 const int mod=1000000007;
11 const int inf=1<<30;
12
13 int n,m;
14 ll a[maxn];
15 int sum[maxn];
16 int p[maxn];
17 vector<int>g[maxn];
18
19 int main()
20 {
21     cin>>n>>m;
22     ll sum=0,max1=0;
23     for(int i=1; i<=m; i++)
24     {
25         scanf("%I64d",&a[i]);
26         max1=max(max1,a[i]);
27         if(i==1)continue;
28         if(a[i]!=a[i-1])
29         {
30             g[a[i-1]].push_back(a[i]);
31             g[a[i]].push_back(a[i-1]);
32             sum+=abs(a[i]-a[i-1]);
33         }
34     }
35     ll ans=sum;
36     for(int i=1; i<=max1; i++)
37     {
38         ll tem=sum;
39         if(!g[i].size()) continue;
40         sort(g[i].begin(),g[i].end());
41         int xx=g[i][g[i].size()/2];
42         for(int j=0; j<(int)g[i].size(); j++)
43         {
44            tem+=(abs(xx-g[i][j])-abs(i-g[i][j]));
45         }
46         ans=min(ans,tem);
47     }
48     printf("%I64d\n",ans);
49     return 0;
50 }

View Code

转载于:https://www.cnblogs.com/fanminghui/p/4319215.html

codeforces C. Ryouko's Memory Note相关推荐

  1. ZFS case : top CPU 100%sy, when no free memory trigger it.

    最近在一个系统频频遇到负载突然飙升到几百, 然后又下去的情况. 根据负载升高的时间点对应的数据库日志分析, 对应的时间点, 有大量的类似如下的日志 : "UPDATE waiting&quo ...

  2. Meltdown: Reading Kernel Memory from User Space论文翻译

    Meltdown: Reading Kernel Memory from User Space翻译 摘要(Abstract) The security of computer systems fund ...

  3. 一篇文章读懂Unity内存 Understanding Memory on iOS

    孙广东   2018.5.26 Understanding Memory on iOS - What kind of memory? • Physical/Resident Memory • Grap ...

  4. OpenCV读写视频文件解析(二)

    OpenCV读写视频文件解析(二) VideoCapture::set 设置视频捕获中的属性. C++: bool VideoCapture::set(int propId, double value ...

  5. 深度学习多框架多平台推理引擎工具

    一种深度学习推理引擎工具,支持多框架.支持多平台推理 项目下载地址:下载地址 支持的计算平台: - Windows 10 (Visual Studio 2019 x64) - Linux (x64, ...

  6. Redis以及Redis的php扩展安装无错版

    安装Redis 下载最新的 官网:http://redis.io/  或者  http://code.google.com/p/redis/downloads/list 第一步:下载安装编译 #wge ...

  7. memcache安装

    转载自 http://zhaochen.blog.51cto.com/2029597/390037 一,memcache简单介绍: memcached是高性能的分布式内存缓存服务器,为了提高性能,me ...

  8. Oracle SQL高级编程——分析函数(窗口函数)全面讲解

    Oracle SQL高级编程--分析函数(窗口函数)全面讲解 注:本文来源于:<Oracle SQL高级编程--分析函数(窗口函数)全面讲解> 概述 分析函数是以一定的方法在一个与当前行相 ...

  9. redis 常用配置

    1. Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程 daemonize no 2. 当Redis以守护进程方式运行时,Redis默认会把pid写入/var/ru ...

  10. hp-ux 集群,内存 小记

    hp-ux 集群,内存 小记 -----查看hp 集群状态信息 # cmviewcl -v CLUSTER        STATUS       dbsvr          up          ...

最新文章

  1. iOS开发网络篇—NSURLConnection基本使用
  2. 自学编程的朋友,我想给你们这 5 个建议
  3. 网易笔试——混合颜料
  4. java 空语句_Java空语句怎么写才正确?这样的Java基础知识才是你需要的
  5. linux下测试磁盘的读写IO速度(IO物理测速)
  6. LM393 电压比较器及其典型电路介绍
  7. 快速排序C语言代码+辅助图+注释
  8. 优锘:发布一站式数字孪生平台森工厂,打造数字孪生领域的office
  9. GMap.NET 使用教程【1】
  10. CODEVS 2853 方格游戏
  11. User Agreement(APP用户协议)
  12. 程序员锻炼宽广的胸怀
  13. win10下java的下载、安装和配置环境教程,超级详细
  14. excel 按照范围替换
  15. win10系统,打开word文档慢慢慢
  16. Python数据分析入门笔记5——数据预处理之异常值
  17. 使用DiskGenius(原DiskMan)修复损坏的硬盘分区
  18. Arangodb——操作案例一
  19. 负重前行的婚纱线上路 - i天下网商-最具深度的电商知识媒体
  20. Codeforces 549F Yura and Developers

热门文章

  1. 主流JS框架中DOMReady事件的实现
  2. 学java后学python,宁波学习java还是python(孩子学Python怎么样)
  3. sap gui java_不喜欢SAP GUI?那试试用Eclipse进行ABAP开发吧
  4. linux删除指定大小的文件,Linux 脚本删除大于指定大小的文件
  5. 【渝粤教育】国家开放大学2018年秋季 2080T现代教育思想 参考试题
  6. 【渝粤教育】国家开放大学2018年秋季 2245T社会福利与保障 参考试题
  7. 【渝粤教育】国家开放大学2018年秋季 0032-21T农业经济学 参考试题
  8. 信息系统开发平台OpenExpressApp - 从compositewpf到MEF
  9. 力扣——合并K个排序链表
  10. 利用vw做rem适配(纯css)