HackerRank "Angry Children 2"
2016-04-15 13:31
344 查看
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.
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)
相关文章推荐
- 【贪心】HDU2187悼念512汶川大地震遇难同胞——老人是真饿了
- Pentaho Work with Big Data(七)—— 从Hadoop集群抽取数据
- Object-C 属性
- VS调试时同时启动多个项目解决方法
- 关于Keil C51中“ERROR L107: ADDRESS SPACE OVERFLOW ”的总
- java压缩解压string
- 自己动手搭建 SSM框架——(Spring+SpringMVC+MyBatis)问题总结
- svn删除文件和解决冲突
- laravel 获取最后一条sql的小函数
- JAVA作业(5)
- Google,微软,科大讯飞的语音识别引擎对比
- Java回调函数透彻理解
- xml参考
- poll实现
- Elasticsearch - 短语匹配(match_phrase)以及slop参数
- android Toast大全,建立属于你自己的Toast
- 代码行数统计及专业统计工具
- storm源码之storm代码结构【译】
- Kafka常用操作
- Android 头像上传 相机+图库 绘制圆形头像