POJ 3277
来源:互联网 发布:雀斑遮瑕膏 知乎 编辑:程序博客网 时间:2024/05/22 18:23
POJ 3277
狂汗的一道题。本来这算是线段树入门级题目了,但是以下是我这个菜鸟的做题情况:
看了下用时最短的只有32MS,相形之下,我的前三次可以算做是TLE了。后来网上找了个代码改了改,时间才缩短到172MS。
我看了下我们的线段树构造主要有以下两个区别:
1. 我的线段树只存了每段的高度。其左边界和有边界在调用函数时写出来,即为以下形式:
insert(p,l,r,a,b){
if(l==a&&r==b){...return;}
m=(l+r)/2;
if(b<=m)insert(2*p,l,m,a,b);
else if(a>=m)insert(2*p+1,m,r,a,b);
else{
insert(2*p,l,m,a,m);
insert(2*p+1,m,r,m,b);
}
}
而它的则采用结构体的形式,初始建树就将线段树左右边界及中间点保存起来,以后做insert操作时不必再计算。
2. 我的线段树结点的高即为其真实的高。若左子树与右子树高不等,记其高为-1。而他的线段树的高并非其真实的高,当父节点的高大于子树的高时,子树的高即为父节点的高;当子树的高大于父节点时子树的高即为自身的高。也就是说一条从根到叶结点的路径中最大的高即为叶子结点的高。故统计时必须计算到叶结点。
以下是我先后提交的代码:
不知道到底是哪种原因造成了如此惊人的差距,我也懒得测试了。总之学会了线段树的另一种构造方法,算是不错的收获吧。
- POJ 3277
- poj 3277
- poj 3277 City Horizon
- poj 3277 City Horizon
- POJ 3277 City Horizon
- poj 3277 java
- poj 3277 City Horizon
- poj 3277 区间覆盖
- poj 3277 City Horizon
- poj 3277 Mountains
- POJ 3277 City Horizon
- POJ 3277 City Horizon
- POJ 3277 City Horizon
- POJ 3277 City Horizon
- poj 3277 City Horizon
- [POJ 3277]City Horizon
- poj 3277 City Horizon
- POJ 3277 City Horizon
- 洗牌算法
- 【图论】【RQNOJ】拦截匪徒
- 如何下载酷6、土豆、优酷、56视频并转化格式进行播
- 2021 发工资咯:)
- (1)在windows下搭建perl学习平台
- POJ 3277
- PHP Thread Safe or Non Thread Safe binaries 区别
- 类似google的可拖动div层网页布局,支持firefox,样式可自定义
- 如何使用arm-eabi-gdb调试android c/c++程序
- 嵌入式交叉编译环境的建立流程
- 哈哈..我的第一次
- SQL Server2005数据库自动备份
- 绿化flash无法编写代码的问题解决
- 在对话框类中引用文档类中的变量