线段树
文章平均质量分 74
ZXLS-ZMR
我喜欢编程喜欢学习新的知识
展开
-
HDU-2795 Billboard (线段树)RE的教训!
题目连接搞了两天的线段树,我一直在犯一个错误,代码看似没错提交总是RE!,心中的迷惑不解,连续做了几道题,都这样,我彻底无语了,搞的我没心情去涮题了。这题也不列外,提交总是RE,感觉自己数组开的完全没问题,在网上搜了很久,以为和我写得差不多的代码竟可以AC!为何?,我试着把他的代码改一改,就在我改了全局变量mid后时候。提交终于出问题了。心中迷惑豁然已解!,原来是全局变量mid若的祸!原创 2013-07-30 15:19:00 · 1156 阅读 · 0 评论 -
HDU -1754线段树
一道经典线段树入门题:query: 区间最大,Update: 单点更新;#include#define M 220000struct node{ int l,r; int val;}tree[M*4];inline int max(int a,int b){ //为了提高运行速度,加内置函数,另外,除法用移位代替。 return a>b?a:b;原创 2013-07-30 15:12:57 · 836 阅读 · 0 评论 -
poj-3468 线段树和树状数组的区间更新及求和
题目连接这也算是线段树入门第一道自己完成的题目。因为在以前,看过别人写的线段树区间更新的方法,叫做延迟标记法,意思是:每次更新不需要更新到底部,换句话说:并不需要每个元素一一更新,只有等到下次更新或被询问的时候才更新!.操作的方法就是用一个辅助数组来记录(标记)更新的信息。我们知道线段树又叫区间树,它又是平衡二叉树。线段树的操作是用递归实现的。查找是二分搜索故时间复杂度为(logn)。原创 2013-07-30 11:06:48 · 868 阅读 · 0 评论 -
HDU-1166 敌兵布阵(树状数组和线段树)
这个题目就是对一组数据的更新和分段求和。由于数据过大,我们就会想到用树状数组。当然,先要了解它。这个题就是它的一个典型应用#include#includeint a[50005],c[50005],n;;void Add(int x,int s){while(x<=n){ c[x]+=s; x+=(x&-x);} } int sum(int x){ int s=0原创 2013-03-31 22:36:43 · 764 阅读 · 0 评论 -
HDU-1394 Minimum Inversion Number(线段树)
牛人专题训练算是会把基本线段树的操作会了,不过,线段树操作非常灵活,线段树只是一个结构,它并没有存什么信息,它主要是节点保存了区间的信息。在这个节点中。可以任意添加一些信息,这要根据不同题目而定了,所以线段树比树状数组适应的范围更广,不过在操作上看,树状数组比线段树要简单的多,而且效率比线段树要好。所以,如果题目能用树状数组就尽量用树状数组。这题怎么说呢,我会写线段树,也不会用。不原创 2013-07-28 22:14:56 · 583 阅读 · 0 评论 -
poj1151-线段树与离散化,扫描线
题目连接网上很多人都说这题很经典,值得做一做,可对于刚学线段树的Acmer似乎有难度,我也不列外,搜了很多人的结题报告,也没几个人说清楚,完全不会!只好拿着别人代码来敲,一步一步理解。画了一张图。也让我知道什么是离散化,什么是扫描线。这也就说明了每次扫描相邻的两条边,并计算出y,那么就需要更新边。这样就把矩形分割了。#include#include#includeus原创 2013-07-28 22:55:54 · 664 阅读 · 0 评论 -
POJ-3264 RMQ 线段树与ST
题意:询问区间最大值与最大值的差。此题解法很多,线段树是最容易理解的了,除了暴力!#include#include#include#define INF 10000000using namespace std ;const int N=200005;struct node{ int l,r; int Mi,Ma;}tree[N*3];int Max,Min,nu原创 2013-10-28 21:05:02 · 749 阅读 · 0 评论