HackerRank "Angry Children 2"
Fun one! A combination of Greedy and DP. The solution sparkled in my mind - I almost lost it..
Greedy: we sort the input numbers and always pick k continuous numbers - can be proved using contradiction
DP: Visualize it in your mind and you will get it : ) Just like a 2D geometry drawing.
# Get Input
n = int(input())
k = int(input())
arr = []
for _ in range(n):
v = int(input())
arr.append(v) # Sort - kinda Greedy: we only pick k continuous nums
arr.sort() # Step1: calc D of first k nums
d = 0
areaUp = 0
areaDw = 0
for i in range(1, k):
areaUp += i * (arr[i] - arr[i - 1])
areaDw += arr[i] - arr[0]
d += areaUp ret = d
# Step2: go over rest numbers
for i in range(k, n):
dd = d
# removing areaDw
dd -= areaDw
areaDw -= (k - 1) * (arr[i - k + 1] - arr[i - k])
areaDw += arr[i] - arr[i - k + 1]
# adding new areaUp
areaUp = areaUp - (arr[i - 1] - arr[i - k]) + (k - 1) * (arr[i] - arr[i - 1])
dd += areaUp
d = dd
ret = min(ret, d) print(ret)
HackerRank "Angry Children 2"的更多相关文章
- HackerRank - candies 【贪心】
HackerRank - candies [贪心] Description Alice is a kindergarten teacher. She wants to give some candie ...
- 无法解析指定对象的 TargetProperty (UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleX)“的异常解决
最近在写动画的时候做一个倒计时的效果,就是数字从大到小的一个动画,但是当我设置要new PropertyPath("XXXXXXX")的时候却报了标题的异常,各种报错.百度了好久也 ...
- jQuery初学:find()方法及children方法的区别分析
首先看看英文解释吧: children方法: find方法: 通过以上的解释,可以总结如下: 1:children及find方法都用是用来获得element的子elements的,两者都不会返回 te ...
- U家面试prepare: Serialize and Deserialize Tree With Uncertain Children Nodes
Like Leetcode 297, Serialize and Deserialize Binary Tree, the only difference, this is not a binary ...
- Don't make a promise when you are in Joy. Don't reply when you are Sad.Don't take decisions when you are Angry.Think Twice.Act Wise.
Don't make a promise when you are in Joy. Don't reply when you are Sad.Don't take decisions when you ...
- 关于firstChild,firstElementChild和children
<div> <p>123</p> </div> 在上面这段代码中,如果使用以下js代码 var oDiv=document.getElementByTa ...
- 日常小测:颜色 && Hackerrank Unique_colors
题目传送门:https://www.hackerrank.com/challenges/unique-colors 感谢hzq大神找来的这道题. 考虑点分治(毕竟是路经统计),对于每一个颜色,它的贡献 ...
- jquery中的children()和contents()的区别
1.children()只会返回元素节点 2.contents()还可以返回文本节点
- parentNode、parentElement,childNodes、children 它们有什么区别呢?
parentNode.parentElement,childNodes.children 它们有什么区别呢?parentElement 获取对象层次中的父对象. parentNode 获取文档层次中的 ...
随机推荐
- Python相对、绝对导入浅析
这篇文章从另外一个不同的视角来分析一下Python的import机制,主要的目的是为了搞懂import中absolute.relative import遇到的几个报错. 这里不同的视角是指从Pytho ...
- WPF仿Word头部格式,涉及DEV RibbonControl,NarvbarControl,ContentPresenter,Navigation
时隔1个月,2015/06/17走进新的环境. 最近一个星期在学习仿Word菜单栏的WPF实现方式,废话不多说,先看一下效果. 打开界面后,默认选中[市场A],A对应的菜单栏,如上图, 选择[市场B] ...
- 《Linux内核设计与实现》课本第一章&第二章学习笔记
<Linux内核设计与实现>课本学习笔记 By20135203齐岳 一.Linux内核简介 Unix内核的特点 Unix很简洁,所提供的系统调用都有很明确的设计目的. Unix中一切皆文件 ...
- iOS开发UI篇—IOS开发中Xcode的一些使用技巧
iOS开发UI篇—IOS开发中Xcode的一些使用技巧 一.快捷键的使用 经常用到的快捷键如下: 新建 shift + cmd + n 新建项目 cmd + n 新建文 ...
- bzoj3730:震波
题意:给一棵树,只有点权无边权, ,每次询问求以一个点为中心,半径为k的全职和. 考虑动态树分治.我们对于每个点(点分树)维护两个树状数组.两个树状数组都以距离为下标,权值为内容.第一个树状数组维护子 ...
- Visual Studio 拓展插件——Image Optimizer
一句话概括效用:在Visual Studio的解决方案中,为图片或包含图片的文件夹添加右键菜单,可对图片进行压缩,无损压缩. 在VS扩展工具中安装 安装好后在VS资源管理器中选择图片右键,在右键菜单中 ...
- 优雅的处理Android数据库升级的问题
原始完成于:2015-04-27 19:28:22 提供一种思路,优雅的处理Android数据库升级的问题,直接上代码: 1 package com.example.databaseissuetest ...
- 黑马程序员——OC语言 核心语法(1)
Java培训.Android培训.iOS培训..Net培训.期待与您交流! (以下内容是对黑马苹果入学视频的个人知识点总结) (一)点语法 点语法其实本质上还是方法调用 当使用点语法时,编译器会自动展 ...
- (转)oracle 存储过程 带游标作为OUT参数输出
(转)oracle 存储过程 带游标作为OUT参数输出 存储过程返回OUT参数的游标 例子. 包中带过程 要自己定义一个type [cur_name] is ref cursor游标,返回的时候就直接 ...
- 【php常用】常用函数啥的
1.intval() 把变量转换成整数类型 2.trim() 去除字符串两边空格or 加上参数是去除该参数 3.array_values() 函数返回一个包含给定数组中所有键值的数组,但不保留键名 ...