UVA11300

初步解题原理:代数运算+单元素极值

代数运算:

xi表示第i个给i-1的数量,正负表示给或得

c=(a1+a2+a3....an)/n

a1-x1+x2=c -->x2=x1-a1+c

a2-x2+x3=c -->x3=x1-a1-a2+2c

a3-x3+x4=c -->x4=x1-a1-a2-a3+3c

......

an-xn+x1=c -->xn=x1-a1-a2-a3....-a(n-1)+(n-1)c

ans=max{|x1|+|x2|+|x3|+....|xn|=|x1-0|+|x1-a1+c|+|x1-a1-a2+2c|.......|x1-a1-a2-a3....-a(n-1)+(n-1)c|}

我们可以用x1表示任意量

ans=min{|x-b1|+|x-b2|+|x-b3|+|x-b4|.......+|x-bn|}

当x取{b1,b2,b3,.....bn}排序后的中位数时,ans取最小值

 1 #include<iostream>
 2 #include<string.h>
 3 #include<math.h>
 4 #include<algorithm>
 5 #include<stdio.h>
 6 #define ULL unsigned long long
 7 #define LL long long
 8 #define maxn 1000009
 9 using namespace std;
10 LL a[maxn];
11 LL b[maxn];
12 int main()
13 {
14     int n;
15     while(~scanf("%d",&n))
16     {
17         ULL C=0;
18         for(int i=1;i<=n;i++)
19         {
20             scanf("%lld",&a[i]);
21             C+=a[i];
22         }
23         C=C/n;
24         b[0]=0;
25         for(int i=1;i<n;i++)
26         {
27             b[i]=b[i-1]-C+a[i];
28         }
29         sort(b,b+n);
30         ULL ans=0;
31         LL mid=b[n/2];
32         for(int i=0;i<n;i++)
33         {
34             ans+=abs(mid-b[i]);
35         }
36         printf("%lld\n",ans);
37     }
38     return 0;
39 }

 

 

转载于:https://www.cnblogs.com/little-w/p/3341947.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/274004.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java GUI 基础知识2 监听机制

TestActionEvent.java没有调用方法&#xff0c;但是有反应。反应自己要编写程序有反应。 事件模型&#xff1a;一定要有某些反应。 写程序&#xff0c;监听的操作是自动发生的&#xff0c;一直监听。钩子函数&#xff0c;&#xff08;回调函数&#xff09; 怎么让它自动执行&am…

求字符串的最长回文字串 O(n)

昨天参加了某公司的校园招聘的笔试题&#xff0c;做得惨不忍睹&#xff0c;其中就有这么一道算法设计题&#xff1a;求一个字符串的最长回文字串。我在ACM校队选拔赛上遇到过这道题&#xff0c;当时用的后缀数组AC的&#xff0c;但是模板忘了没写出代码来。 回头我把这道题目再…

数据结构 二、向量(接口与实现and可扩容向量)

ADT操作实例&#xff1a;Disordered&#xff1a;显示出3对逆序紧邻对。Vector模板类初始有效空间为0&#xff1b;基于复制的构造描述区间&#xff1a;左闭右开 为什么*2&#xff1f;有限时间内不必要为扩容而打断。 2、可扩充向量左移一位&#xff1a;加一倍

数据库:mysql 获取刚插入行id[转]

我们在写数据库程序的时候,经常会需要获取某个表中的最大序号数, 一般情况下获取刚插入的数据的id&#xff0c;使用select max(id) from table 是可以的。但在多线程情况下&#xff0c;就不行了。 下面介绍三种方法 (1) getGeneratedKeys()方法: 程序片断: Connection conn ; …

svn由于连接方在一段时间后没有正确答复或连接的主机没有反应连接尝试失败...

解决方法&#xff0c;关掉防火墙&#xff0c; service iptables status 查看iptables状态 service iptables restart iptables服务重启 service iptables stop iptables服务禁用 转载于:https://www.cnblogs.com/jiqing9006/p/3347441.html

Android 服务(Service)

一、服务的解释 服务&#xff08;Service&#xff09;是Android中实现后台运行的解决方案&#xff0c;它适合那些去执行不需要和用户交互而且还要求长期运行的任务。服务的运行不依赖任何的与任何用户界面&#xff0c;即使程序被切换到后台&#xff0c;或者用户打开了另外一个应…

CenOS 配置C/C++语言

1.下载eclipseCDT组合包。 2.电脑上安装GCC&#xff0c; G 3.在eclipse上创建一个C project 4. Eclipse CDT功能很强大&#xff0c;安装完虽然可以编译运行c程序&#xff0c;但有个问题&#xff0c;就是找不到c标准库的头文件&#xff0c;无法打开诸如之类的文件&#xff0c;编…

(数据结构)前缀,后缀以及中缀表达式

中缀表达式&#xff08;中缀记法&#xff09; 中缀表达式是一种通用的算术或逻辑公式表示方法&#xff0c;操作符以中缀形式处于操作数的中间。中缀表达式是人们常用的算术表示方法。 前缀表达式&#xff08;前缀记法、波兰式&#xff09; 前缀表达式是一种没有括号的算术表…

Moravec角点检测算子

Moravec角点检测算子 Moravec 在1981年提出Moravec角点检测算子[1]&#xff0c;并将它应用于立体匹配。 首先, 计算每个像素点的兴趣值, 即以该像素点为中心, 取一个w*w(如:5x5)的方形窗口, 计算0度、45度、90度、135度四个方向灰度差的平方和, 取其中的最小值作为该像素点的兴…

java习题-练习1

1、 Given the string, check if it is a palindrome.&#xff08;回文&#xff09; Example For inputString "aabaa", the output should becheckPalindrome(inputString) true;For inputString "abac", the output should becheckPalindrome(inputSt…

文件夹生成工具

很简单的一个小工具,输入一个字符串,可以为你生成相应的文件夹. 至于有什么用?我公司一个策划拿一顿饭给我要的. 下载地址: http://pan.baidu.com/s/1d0ewl 转载于:https://www.cnblogs.com/WhyEngine/p/3350053.html

java中System.exit(1)、System.exit(0)、以及return的区别

System.exit(0)是正常退出程序&#xff0c;而System.exit(1)或者说非0表示非正常退出程序System.exit(status)不管status为何值都会退出程序。 和return 相比有以下不同点&#xff1a;return是回到上一层&#xff0c;而System.exit(status)是回到最上层

(转载)深入理解Linux中内存管理---分段与分页简介

首先&#xff0c;必须要阐述一下这篇文章的主题是Linux内存管理中的分段和分页技术。 来回顾一下历史&#xff0c;在早期的计算机中&#xff0c;程序是直接运行在物理内存上的。换句话说&#xff0c;就是程序在运行的过程中访问的都是物理地址。如果这个系统只运行一个程序&…

eclipse解决Android Library Project jar包重复导致的问题

Android Studio部分情况下用起来还是有些不适应的地方&#xff0c;用eclipse熟练了&#xff0c;在赶项目进度的情况下还得重拾eclipse。下面是今天碰到的一个老问题。 1.在导入Android Library工程文件的时候要把library一起拷贝到workspace中 2.在导入的Android Library工程文…

java中main函数的args参数

先说一下args的作用&#xff1a;我们习惯将一些有用的参数传递给我们定义的函数&#xff0c;那么可曾想过有参数传递给main函数&#xff1f;args就是传递给main函数的一个数组参数。可是main函数作为程序(application程序)的入口点&#xff0c;是由系统自动调用的&#xff0c;怎…

算法:排序算法的比较

默认为递增顺序&#xff1b;注&#xff1a;一下例子希望自己再次复习时&#xff0c;可以用笔在纸上画画内存图。 包括有: 选择排序冒泡排序插入排序 1.选择排序 <--------------------------------------选择排序---------------------------------------> 1、选择排…

LTTng 简介使用实战

一、LTTng简介 LTTng: (Linux Trace Toolkit Next Generation),它是用于跟踪 Linux 内核、应用程序以及库的系统软件包。LTTng 主要由内核模块和动态链接库(用于应用程序和动态链接库的跟踪)组成。它由一个会话守护进程控制,该守护进程接受来自命令行接口的命令。babeltrace 项…

黑马程序员-------------(十)Java基础知识加强(一)

JDK1.5新特性 目录1.之前已经学习过的JDK1.5新特性2.静态导入 StaticImport3.可变参数 ...4.高级for循环5.枚举6.泛型 Generic7.注解注&#xff1a;本章全部为重点内容。###################################################################################################…

java例子:数组 数3退1

500个人围成一个圈子&#xff0c;数够3人&#xff0c;就退出1个&#xff0c;问最后剩下的是几号&#xff1f;检验先有5个人&#xff0c;应该留下第4个人&#xff0c;由于是数组&#xff0c;所以第四个人的下标是3. /*achieve the funtion :count 3 kids, the quit the third k…

Android版CCLabelTTF在setstring时出现黑块

首先有个前提知识&#xff0c;cocos2dx里&#xff0c;只能在ui线程&#xff08;通常也就是主线程&#xff09;中进行渲染工作&#xff08;貌似现在有一些引擎是支持多线程渲染的&#xff0c;没有深入研究&#xff09;&#xff0c;否则大约会因为多个线程同时给GPU发指令而出现问…