线段树
smallacmer
这个作者很懒,什么都没留下…
展开
-
http://acm.hdu.edu.cn/showproblem.php?pid=1754&&线段树区间求最值
I Hate It Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 13403 Accepted Submission(s): 5188 Problem Description 很多学校流行一种比较的习惯。老师们很喜欢询问,从某原创 2012-03-23 14:43:10 · 1003 阅读 · 0 评论 -
http://acm.hdu.edu.cn/showproblem.php?pid=2871&&Memory Control
线段树之区间合并+二分查找,和hotel哪一题类似,, AC代码: #include #include #include #include #include #define CLR(arr,val) memset(arr,val,sizeof(arr)) #define N 50005 #define lson l,m,rt<<1 #define rson m+1,r,rt<<1|1 #de原创 2012-11-08 10:58:50 · 1047 阅读 · 0 评论 -
http://acm.hdu.edu.cn/showproblem.php?pid=3308&&线段树之区间合并
由于这几天学算法的情绪高涨,于是就复习了之前学的线段树,这进一步加深了对线段树的理解,顺便记录一下自己的心得: 1,做线段树题首先要考虑的是线段树中节点的属性,比如左右边界,区间和,在该区间插入的值,延迟标记,等等。 2,弄清楚孩子节点的更新对父亲节点的影响,父亲节点的更新对孩子节点的影响,从而设计好push_up()和push_down()函数。 3,在弄清前两步的基础上设计好build(原创 2012-11-07 11:05:25 · 1054 阅读 · 0 评论 -
http://acm.nyist.net/JudgeOnline/problem.php?pid=119
一开始想的是写两个查询一个找最大值,一个找最小值,没想到却tle,,最后写了一个查询,,却莫名其妙的过了,杯具的线段树求法~~~~ #include #include #include #include #include #include using namespace std; const int MAX = 0xfffffff; const int N = 100005; int max原创 2012-03-29 09:23:58 · 570 阅读 · 0 评论 -
The 36th ACM/ICPC Asia Regional Beijing Site&&http://acm.hdu.edu.cn/showproblem.php?pid=4046
比较难的线段树题,,, #include #include #include #define N 50005 using namespace std; typedef struct NODE { int l; int r; int key; }Node; Node node[N<<2]; char str[N]; void build(int t,int l,int r)原创 2012-03-27 13:45:25 · 755 阅读 · 0 评论 -
http://acm.hdu.edu.cn/showproblem.php?pid=1394&&线段树之求逆序数
#include #include #include #include #define N 5005 #define L(x)(x<<1) #define R(x) (x<<1|1) #define M(x,y) ((x+y)>>1) using namespace std; typedef struct str { int l; int r; int key; }Node; Node no原创 2012-03-24 11:02:02 · 678 阅读 · 0 评论 -
http://acm.hdu.edu.cn/showproblem.php?pid=1698
第一次写线段树题,写的是静态的飘过~~~ 线段树:它主要用于处理一段连续区间的插入,查找,统计,查询等操作。 复杂度: 设区间长度是n,所有操作的复杂度是logn级别。 一线段树的建图有两种。 1、最后一层建成线段,就是所有区间都是开区间,最后一层是[1,2] [2,3] [3,4]。。。。。。 2、最后一层建成点,类似[1,1] [2,2].. 二、更原创 2012-03-22 20:28:02 · 855 阅读 · 0 评论 -
http://acm.hdu.edu.cn/showproblem.php?pid=2795&&线段树之求最小区间端点值
刚看到这一题还以为用的是二维线段树,,于是一个劲的想模型,想了一个上午还是没有理清头绪来,,,最后看看了hh神牛的博客,,才明白是怎么回事,以行数对应线段树的端点建树,以该行没有被覆盖列数为该区间的最大值。从而转化为求区间最大值大于给定数的最小端点值问题,,,但要注意的是更新子节点对父节点的影响 #include #include #include using namespace std;原创 2012-03-24 17:03:15 · 1390 阅读 · 0 评论 -
http://acm.hdu.edu.cn/showproblem.php?pid=1166&&线段树区间求和
这两天写几道线段树题,意外发现建树的过程其实就是先序的过程,如果写的是动态的话,删除结点的过程就是后序的过程。。 #include #include #include #include #define L(x)(x<<1) #define R(x) (x<<1|1) #define M(x,y) ((x+y)>>1) #define N 50005 using namespace std; ty原创 2012-03-24 09:49:00 · 832 阅读 · 0 评论 -
http://acm.nbut.cn:8081/Problem/view.xhtml?id=1317&&线段树单点查询
题意:给你一个插入的序列,然后输出最后的序列,如果用一般方法查询为o(n),而用线段树查询可以优化到log(n)。。。。 AC代码: #include #include #include #include #define CLR(arr,val) memset(arr,val,sizeof(arr)) #define lson l,mid,rt<<1 #define rson mid+1原创 2012-12-08 12:37:08 · 1535 阅读 · 0 评论