
数据结构
文章平均质量分 78
h2952220
这个作者很懒,什么都没留下…
展开
-
hdu 3308 线段树——区间合并
线段树——区间合并练习题题目要求求区间内连续最长的递增序列曾尝试用数组的风格写……后来合并查询区间的时候实现不了叻……于是又换了就得那种用结构体的风格的代码。#include #include #include #define lson l,mid,dex<<1#define rson mid+1,r,dex<<1|1#define havemid int m原创 2012-08-29 17:50:06 · 602 阅读 · 0 评论 -
hdu 3074 线段树模板题
线段树经典题目……/*线段树单点更新 节点记录元素个数查找第K元素所在*/#include #include #include #include #include #include #include #define lson l , mid , dex<<1#define rson mid + 1 , r , dex<<1|1#define havemid int m原创 2012-09-30 07:05:28 · 927 阅读 · 0 评论 -
poj 2528 线段树-区间更新 离散化
这道题很久以前就尝试做了,后来因为那时候离散化一窍不通于是退而却步。之后做到扫描线必须用到离散化,于是才狠下心来把离散化端了。引用Accepted的博客的一句话“你若不想做,你会找借口;你若想做,你会找办法”。首先讲离散化,所谓的离散化,在我看来,就是把题目中有意义的点的值抽取出来,过滤掉无意义的点,以达到节省空间甚至时间的目的。例如我们这道题直接开数组是impossibl原创 2012-09-08 07:29:28 · 1862 阅读 · 0 评论 -
poj 1195 二维树状数组
貌似是第一道传说中的二维的题目。二维就是把单行数组变成了矩形数组引用一下别人的图片:下面这个图片是更新(1,1)这个点所引发的树状数组的变化由此我们不难看出,二维只是在一维的基础上向上拓展了一维。更新和求开头到某一坐标的矩阵和和一维的操作差不多,只是多了一重循环在求子矩阵和的时候则不能简单的右上矩阵和减左下矩阵和。具体求子矩阵和的思路可以自己想想,不懂看下面输出函数的代原创 2012-09-25 07:57:12 · 410 阅读 · 0 评论 -
hdu 4417 离线 + 树状数组
这道题目可以用线段树也可以用树状数组,还可以用划分树(不会T T),前两者要离线完成,划分数不太清楚=。 =先吐槽一下:由于树状数组今天才刚刚会没多久……于是悲剧的由于update的上限弄错而WA了一版…查错查了N久N久……题解:根据队里面讨论,离线也有两种做法。先讲第一种做法:先把所有数据都进来,之后把出现的障碍物的高度(包括n个障碍物以及m个查询的跳跃高度h)全部离散化,否原创 2012-09-26 01:09:45 · 498 阅读 · 0 评论 -
poj 3461 字符串-KMP
昨晚本来想看一下数据结构的作业……突然发现第三章有KMP算法,抱着慕名已久的心态一看就入迷……(突然发现吉大的数据结构书貌似还不错)看完理解算法的步骤之后开始写自己实现代码。。。期间虽然偷偷瞄过几眼书上那ADT代码,绝大部分还是自己写得。鉴于这道题是KMP水题(只是用来看看自己写得KMP对不对……)我就不解释什么了。自己上网看懂KMP教程就ok。照旧:不建议观摩他人代码=。原创 2012-09-28 13:25:11 · 375 阅读 · 0 评论 -
poj 3264 求区间最值
每个节点保存区间的最大最小值水题不解释╮(╯▽╰)╭#include #include #include #include #define lson l , mid, dex<<1#define rson mid+1, r, dex<<1|1#define havemid int mid = (l+r)>>1#define LL long longusing namespa原创 2012-09-07 15:00:15 · 521 阅读 · 0 评论 -
zoj 1610 线段树-区间更新
稍微解释一下第一组测试数据:50 4 40 3 13 4 20 2 20 2 30 4 4不能理解为0~4这5个节点,而应该理解为0~1;1~2; 2~3; 3~4这4个线段颜色涂为4这样就能解释1 1这个output了#include #include #include #include #define lson l,mid,dex<<1原创 2012-09-07 12:01:15 · 425 阅读 · 0 评论 -
poj 3667
线段树之区间合并之前多校整过一道,整了两天才弄懂= =……现在整了半个上午……而且还严重参考了大牛代码= =以后还得再做一次,经典题目多做有益身心╮(╯▽╰)╭贴代码:(和大牛代码基本一样= =,只是变量名字不同)#include #include #include #define lson l,mid,dex<<1 /*******************原创 2012-08-27 13:13:53 · 777 阅读 · 0 评论 -
hdu 1754
单点替换线段树。注意区间保存的是该区间最大值即可。线段树基本结构请参照代码。推荐线段树文章:http://www.notonlysuccess.com/index.php/segment-tree-complete/#include #include #include using namespace std;const int maxx = 200010;struct原创 2012-08-21 18:07:35 · 341 阅读 · 0 评论 -
hdu 1394 线段树
线段树专辑之单点更新第三题!题意想了挺久,在此解释一下。题目给出一个0~n-1的序列,这个序列有n种变化(分别将前n(0~n-1)个数移到数列最后一个数的后方),对于每一种序列都有一个逆序数。我们要求所有序列中逆序数最小的值。逆序数:对于样例1 3 6 9 0 8 5 7 4 21~9的逆序数为0,0的逆序数为4,8的为1,5的为3,7的为2,4的为5,2的为7,共22. 换序后有一种原创 2012-08-22 13:58:31 · 427 阅读 · 0 评论 -
hdu 2795
线段树专辑之单点更新4题意略。在做题前我首先注意到了数据的范围。w和h均为10^9,如果开4倍这么大的数据,必超无疑。所幸,大牛给的例题没有用到离散化。根据题目的意思我们知道最多只有n个广告,而每个广告注定只有1单位长。而n的范围只有200,000. 撑死也就200000行,一开始先比较一下h和n的值,之后选取较小的进行建树即可。线段树每个节点的key值储存区间内的所有子节点中的最大宽原创 2012-08-22 22:24:03 · 429 阅读 · 0 评论 -
zoj 3635 Cinema in Akiba 线段树-单点更新
zoj月赛……只水了一道线段树的题目= =第一题是很像线段树的YY题………虽然觉得区间合并貌似还是能做出来,不过区间合并还不是很懂= =!!比赛的时候明明就看出来本质不是线段树的说……可是还是想用线段树做出来。。。单点更新小变形,每个节点存区间里面还没被拿走的门票的个数,不懂可以刷一下http://www.notonlysuccess.com/index.php/segment原创 2012-08-27 22:57:10 · 572 阅读 · 0 评论 -
poj 2777 线段树-区间更新
区间更新 + 二进制小优化每个key值表示当前节点存在的颜色的种类个数(因为T#include #include #include #define lson l, mid, dex<<1#define rson mid+1, r, dex<<1|1#define havemid int mid = (l + r)>>1using namespace std;const int原创 2012-09-07 11:57:51 · 508 阅读 · 0 评论