Minimum Sum

Problem's Link

----------------------------------------------------------------------------

Mean:

给定n个整数,从中选出m个整数出来,使得这m个整数两两求(差的绝对值),并保证(差的绝对值)之和最小。

analyse:

首先,要使得m个数(差的绝对值)之和最小,易知这m个数应该是连续的,所以先排序。

然后就是滑窗法了。

滑的时候如何维护滑块的sum呢?

如果我们选出的数是:

a1 a2 ... ak

对于a1,后面有k-1个数,且每个数都是减去它,即:a1带了k-1次负号;

对于a2,后面有k-2个数,且每个数都是减去它,,带了k-2次负号,但是他还要减去它前面的所有数,又带了k-1次正号,相抵后总的带了k-3次负号;

对于a3,后面有k-3个数,且每个数都是减去它,,带了k-3次负号,但是他还要减去它前面的所有数,又带了k-2次正号,相抵后总的带了k-5次负号;

...

由此可以看出,求m个数(差的绝对值)之和的方式是:

sum1 = a1*(1-k) + a2*(3-k) + a3*(5-k) + ... + ak*(k-1)

向后滑动一个数,sum2的求法一样,这时我们来对比一下sum1和sum2的差别:

sum1 = a1*(1-k) + a2*(3-k) + a3*(5-k) + ... + ak*(k-1)

sum2 =            a2*(1-k) + a3*(3-k) + ... + ak*(k-3) + a(k+1)*(k-1)

我们先预处理出s[]数组,s[i]代表a0~ai的和.

那么:sum2=sum1+ai*(k-1)-a(i-k)*(1-k)-2*(s[i-1]-s[i-k]).

Time complexity: O(N)

view code

;

; ; ; ;
       ;
       );
           ;
}

数学 - Whu 1603 - Minimum Sum的更多相关文章

  1. Whu 1603——Minimum Sum——————【单个元素贡献、滑窗】

    Problem 1603 - Minimum Sum Time Limit: 2000MS   Memory Limit: 65536KB   Total Submit: 623  Accepted: ...

  2. Minimum Sum(思维)

    Problem 1603 - Minimum Sum Time Limit: 2000MS   Memory Limit: 65536KB    Total Submit: 563  Accepted ...

  3. geeksforgeeks@ Minimum sum partition (Dynamic Programming)

    http://www.practice.geeksforgeeks.org/problem-page.php?pid=166 Minimum sum partition Given an array, ...

  4. Minimum Sum LCM(uva10791+和最小的LCM+推理)

    L - Minimum Sum LCM Time Limit:3000MS     Memory Limit:0KB     64bit IO Format:%lld & %llu Submi ...

  5. UVA.10791 Minimum Sum LCM (唯一分解定理)

    UVA.10791 Minimum Sum LCM (唯一分解定理) 题意分析 也是利用唯一分解定理,但是要注意,分解的时候要循环(sqrt(num+1))次,并要对最后的num结果进行判断. 代码总 ...

  6. Minimum Sum of Array(map迭代器)

    You are given an array a consisting of n integers a1, ..., an. In one operation, you can choose 2 el ...

  7. HDU 3473 Minimum Sum(划分树)

    Minimum Sum Time Limit: 16000/8000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Tota ...

  8. Minimum Sum of Array(map)

    You are given an array a consisting of n integers a1, ..., an. In one operation, you can choose 2 el ...

  9. HDOJ 3473 Minimum Sum

    划分树,统计每层移到左边的数的和. Minimum Sum Time Limit: 16000/8000 MS (Java/Others)    Memory Limit: 65536/32768 K ...

随机推荐

  1. 人人都是 DBA(I)SQL Server 体系结构

    在了解 SQL Server 数据库时,可以先从数据库的体系结构来观察.SQL Server 的体系结构中包含 4 个主要组成部分: 协议层(Protocols) 关系引擎(Relational En ...

  2. 作业三(代码规范、代码复审、PSP)

    1.代码规范: 我支持代码要有规范,理由如下. (1).艺术是一个很带有个人风格的学科,天马行空才能凸显出自己的价值.但不要忘了,会艺术的不是生下来就会艺术, 他也需要按照前辈的步骤一步一步的学习基础 ...

  3. 细说angular Form addControl方法

    在本篇博文中,我们将接触angular的验证.angular的验证是由form 指令和ngModel协调完成的.今天博主在这里想要说的是在验证在的一种特殊情况,当验证控件没有没有name属性这是不会被 ...

  4. Linux Shell变量

    200 ? "200px" : this.width)!important;} --> 介绍 变量是shell脚本中必不可少的组成部分,在脚本中使用变量不需要提前声明.在ba ...

  5. 透析Express.js

    前言 最近,本屌在试用Node.js,在寻找靠谱web框架时发现了Express.js.Express.js在Node.js社区中是比较出名web框架,而它的定位是“minimal and flexi ...

  6. 实现基于Task的异步模式

    返回该系列目录<基于Task的异步模式--全面介绍> 生成方法 编译器生成 在.NET Framework 4.5中,C#编译器实现了TAP.任何标有async关键字的方法都是异步方法,编 ...

  7. 博文写作——摘要&摘要图标

    问题描述: 写博文的时候,一个比较好的习惯就是在博文的开头用简短的文字介绍一下本篇博文的大致内容.在博客园系统里面,如果博文没有在指定的地方添加摘要内容,那么系统会自动截取博文的开始部分作为摘要.如下 ...

  8. PMO到底什么样?(2)

    接上一篇,继续聊一聊PMO到底什么样. 交付功能,8大典型责任 1监控.评定和报告 项目办理单位从交付的视点必定要有监控评定.每个项目在要害的期间上它的进展是不是跟按期的相同:是不是有要害的专家在要害 ...

  9. 使用JSSDK集成微信分享遇到的一些坑

    h5项目中需要集成微信分享,以实现自定义标题.描述.图片等功能.结果遇到了很多坑. 准备工作 务必详细阅读微信JS-SDK说明文档 需要后端支持 强烈建议下载使用微信web开发者工具 按文档配置好公众 ...

  10. C#并行编程-PLINQ:声明式数据并行

    目录 C#并行编程-相关概念 C#并行编程-Parallel C#并行编程-Task C#并行编程-并发集合 C#并行编程-线程同步原语 C#并行编程-PLINQ:声明式数据并行 背景 通过LINQ可 ...