2017.08.15【NOIP 普及组】模拟赛C组 猴子拆房
来源:互联网 发布:大数据支撑平台 编辑:程序博客网 时间:2024/06/14 17:24
思路:
2186. 猴子拆房
(File IO): input:house.in output:house.out
时间限制: 1000 ms 空间限制: 131072 KB 具体限制
Goto ProblemSet呵呵哒。。。。
思路:
第一层思路:暴力o(n^2),超时;
第二层思路:高度从大到小排序,所有数加入堆,利用sum求出以h[i]为最高高度的所有大于h[i]的c[i]之和(很绕),每次做完后sum加上所有当前=h[i]的c[i]之和。大根堆维护最大值,连取d[i]-1(h[i]有几个)个,再用g(堆里所有数之和)-g1(被取的最大值之和)求出f[i]为最高高度下面的最优解。sum+g-g1为上下最优解之和。每次做完后,将h[i],c[i]退堆。答案为min(sum+g-g1)。时间复杂度O(n log n),可过,但有些复杂。。。。
第三层思路(先看懂第二层):高度从小到大排序!这样加入堆的都有用,复杂(猥琐)的退堆省略;仍是大根堆维护最大值,g-g1方法没变。以h[i]为最高高度上面的c[i]之和用sum储存,sum初值为c[i]之和。每次sum减以h[i]为高度的c[i]之和,答案同上。时间复杂度o(n log n),可过,较为简单!
思路较为简单,考实现能力!
程序框架:
1,定义变量;
2,快排(5)后;
3,up操作;
4,down操作;
5,读入;
6,快排后求需要的值(如sum等);
7,o(n)枚举循环;
8,sum减;
9,ans=sum;
10,求出h[i]下面的最优解;
11,ans:=ans+下面最优解;
12,取ans的min
13,输出min
希望对大家有帮助!
无标程
阅读全文
0 0
- 2017.08.15【NOIP 普及组】模拟赛C组 猴子拆房
- 2017.08.15【NOIP 普及组】模拟赛C组总结
- 2017.08.15【NOIP 普及组】模拟赛C组总结
- 2017.08.06【NOIP 普及组】模拟赛C组题解
- 2017.08.14【NOIP 普及组】模拟赛C组总结
- 2017.08.16【NOIP 普及组】模拟赛C组总结
- 2017.08.16【NOIP 普及组】模拟赛C组总结
- 2017.03.04【NOIP 普及组】模拟赛C组
- 2017.03.18【NOIP 普及组】模拟赛C组
- 2017.04.02【NOIP 普及组】模拟赛C组
- 2017.09.02【NOIP 普及组】模拟赛C组总结
- 2017.09.09【NOIP 普及组】模拟赛C组
- 2017.09.23【NOIP 普及组】模拟赛C组 总结
- GaoJueYi【2016.07.15初中部 NOIP普及组 】模拟赛总结
- 【GaoJueYi 2016.08.15初中部 NOIP普及组 】模拟赛总结
- 【陈奕凝2016.08.15初中部 NOIP普及组 】模拟赛总结
- 【NOIP普及组模拟】采药
- 2017.03.04【NOIP 普及组】模拟赛C组 T4:泽泽在埃及
- Python中tuple和数组的区别
- Spring注解
- sklearn中的相关模性算法的调参
- HDU 3605 Escape(最大流+状态压缩)
- poj1273(最大流)
- 2017.08.15【NOIP 普及组】模拟赛C组 猴子拆房
- QT信号槽传递参数技巧
- C语言中的static 详细分析
- 并查集详解(模板)
- 【NOIP2016-D1T3】换教室
- poj-2395-Out of Hay-(Kruskal)
- [POJ](1789)Truck History ---最小生成树(图)
- 算法题练习系列之(二十七): 有理数四则运算
- Mybatis 初识