线段树专辑
文章平均质量分 69
Java_beginer1
爱好算法
展开
-
poj hotel线段树区间合并
节点主要记录三个信息:msum,lsum,rsum;假设,L---R代表当前节点代表区间;msum表示 在L————R区间内最大连续空房间数目;lsum表示在L————R区间内以L为起点的最大连续空房间数目;rsum表示在L————R区间内以R为右端点(自由向左的)的最大连续空房间数目;#include#include#include#include#include#原创 2012-11-06 19:35:47 · 1709 阅读 · 0 评论 -
hdu4267
郁闷死了,做了两天了,(i-a)%k==0,可以转化为i%k==a%k;ORZ...#include#include#include#includeusing namespace std;const int N=50010;int sum[N<<2][55];int col[N<<2],res[N]; #define lson l,mid, rt << 1#define原创 2012-09-20 17:40:04 · 738 阅读 · 0 评论 -
http://poj.org/problem?id=3468线段树简单 成段更新 区间求和
这题是昨天的比赛题,昨天比赛完美被大一的虐了,感觉自己真是白活了,一头撞死算了,人家大一的做了5题,而我这个水货这做了两道签到题;明显昨天知道这个题目是线段树,刚开始还想用树状数组试试,后来写完了发现不是插线问点,结果可想而知,代码重写,再看时线段树,然后不会了,自己只会单点更新,以后努力了,没有时间给自己犹豫了;抓紧时间学习数据结构,还有贪心,图论,搜索,还有C++;任重道远;其中本题的延迟原创 2012-08-01 17:40:55 · 1724 阅读 · 0 评论 -
线段树单点更新http://acm.hdu.edu.cn/showproblem.php?pid=1166
HH真是神牛,线段树用的真是炉火纯青,DBL;先献上若菜的代码;这题树状数组会更简单,不过我先用线段树,练练代码;#include#include#includeusing namespace std;#define lson l,mid,rt<<1#define rson mid+1,r,rt<<1 | 1const int N=50005;int num[N<<2];原创 2012-08-01 19:18:14 · 850 阅读 · 0 评论 -
http://poj.org/problem?id=2828线段树 逆序
尼玛线段树终于又有点进展了,果断的难,自己一直不知道在具体的问题中用线段树记录什么内容,看来还是做过的题目太少了,见过的类型很少,以后要努力了,这次必须把线段树专辑搞完在回家。。。。弱爆了。这题刚开始看时完全不知道线段树记录什么内容,如何用线段树表示,更不知道如何下手了;后来看了别人的解题报告理解了好长时间,才明白,真心要努力了,多思考;由于这题是插队的问题,要等所有信息输入完才知道最终结原创 2012-08-07 09:30:32 · 965 阅读 · 0 评论 -
http://acm.hdu.edu.cn/showproblem.php?pid=2795区间最大值
刚开始时感觉本题是二维线段树,然后分析一下貌似不是,就是求取区间最大值的位置,感觉和之前的那道求逆序数的有一部分很像,查询更新;这题是把查询和更新合在了一起;但是我这个弱菜不会写代码,之后果断参考了HH神牛的模板;ORZ。。。各种若,弱不经风,刚学线段树,以后要努力,第一次这么晚了还在写代码了,ORZ。。只有我这种若才才会熬夜。。。好了今天到这里一会碎觉喽,不然会挂的。这几天看到网上很多新闻因原创 2012-08-03 03:28:40 · 2693 阅读 · 0 评论 -
http://acm.hdu.edu.cn/showproblem.php?pid=1394求逆序数
这题用线段树求逆序数很巧妙,在数据输入时查询和更新线段树;线段树果断强大;在这有个不好想到的地方就是题目给出的数字是连续的0---n-1;比如给出的序列是3,2,4,1,0;则逆序数等于8,然后把3移到后面,结果新的序列变成2,4,1,0,3;新的逆序数是8+(5-3-1)-3;其中5-3-1表示在(3,2,4,1,0)序列中比3大的数有几个;再减去3表示在(3,2,4,1,0)中3的右边比3原创 2012-08-02 17:40:46 · 754 阅读 · 0 评论 -
http://acm.hdu.edu.cn/showproblem.php?pid=1698&&线段树 成段替换 延迟标记
ORZ#include#includeusing namespace std;const int N=100005;int num[N<<2],col[N<<2];#define lson l, mid, rt << 1#define rson mid+1, r, rt << 1 | 1void PushUp(int rt){ num[rt]=num[rt<<1]+num[r原创 2012-08-01 18:31:56 · 674 阅读 · 0 评论 -
poj 3264 区间最值
#include#include#include#include#include#includeusing namespace std;#define lson l,mid,rt<<1#define rson mid+1,r,rt<<1 | 1const int N=51002;int Max[N<<2],Min[N<<2],mmax,mmin;void PushUp(int原创 2012-11-08 10:22:19 · 602 阅读 · 0 评论