线段树 树状数组
文章平均质量分 78
zxy_snow
这个作者很懒,什么都没留下…
展开
-
hdu 4614 Vases and Flowers
周末UA做了这场多校的vjudge版本。我去陪爸妈去山沟沟转了,回来听说有个这个线段树,想敲敲。多年不做线段树,好恶心>struct Tnode{ // 一维线段树 int l,r; int cover; int lid, rid; int sum; int len() { return r - l;} int mid() {原创 2013-08-05 14:54:28 · 3744 阅读 · 3 评论 -
The 36th ACM/ICPC Asia Regional Beijing Site Online Contest - G Panda
分题每次我看的都是1 2 3.。。。今天第一题真是吓着我了。。囧。。这题是LG看的,说是线段树,我当时觉得应该不是最简单的题,就去看其他题,后来CG说了,这题很简单,他把他思路跟我说了。以三个字符代表一个点,插入线段树,更新的话,更新三个点,比如 123456,这些,原创 2011-09-18 19:22:37 · 2167 阅读 · 16 评论 -
zoj 3273 || hdu 3265 Posters
09宁波区域赛的题。。。09宁波也。。。GB他们在这个区域赛拿铜的那个比赛。。。矩形面积并,小变形。这个矩形中间有一块是镂空的。所以把每个矩形分成四个小矩形即可。开始以为扫描到镂空的时候就记录减1,扫出的时候就加1,死活不对,我还是切成4个矩形做吧 = =。。原创 2011-07-29 19:57:33 · 1102 阅读 · 0 评论 -
划分树学习(poj 2104,hdu 3473)
线段树一维的刷差不多了,求区间第K数一直卡着。划分树和归并树都可以求,比较了一下时间效率,划分树比归并树快了很多,而且POJ有个求区间第K数的题用归并树居然过不去。鉴于时间短,我决定把划分树给弄明白= =。。借用下小HH的图。划分树和归并树都是用线段树作为辅助原创 2011-08-12 11:11:33 · 12017 阅读 · 8 评论 -
线段树学习(二)
写的很水。。大家绕道走吧。学了十天了都。刷了快30题了,水题居多= =。。基本线段树题型也就这样了吧。不过求区间第K数的我一直没做,没太理解怎么做。大致分为这几类操作:1、区间覆盖,染色啊,异或啊,加上一个数,乘一个数,都变成某个数啊神马的。2、涉及矩形的原创 2011-08-10 17:07:32 · 1337 阅读 · 0 评论 -
My归并树,划分树模板。
POJ 2104 划分树,时间复杂度O(MlogN),归并树,时间复杂度O(Mlog^3N)。归并树#include #include #include #include #include #include #include #include #inc原创 2011-08-11 13:23:19 · 2309 阅读 · 8 评论 -
BZOJ 1012: [JSOI2008]最大数maxnumber
线段树水题,一个节点一个节点的建,保存上一次结果,以及序列长度即可。http://www.zybbs.org/JudgeOnline/problem.php?id=1012#include #include #include #include #include原创 2011-08-10 17:53:35 · 2236 阅读 · 0 评论 -
hdu 3397 Sequence operation
比较恶心的线段树。感觉出线段树真随意,几种简单操作一结合就是一很恶心的 T T 。这个就是。覆盖操作+异或操作。各算各的,但是有个地方需要注意下,就是tag传递的先后问题。我一直WA在这里,后看别人解释,如果覆盖的话,那么异或已经没有用了,把异或标记为0即可。改了之后AC原创 2011-08-06 13:06:49 · 1656 阅读 · 0 评论 -
zoj 2859 Matrix Searching
人生第一棵二维线段树,哇卡卡卡卡卡卡卡卡!!!虽然是看着资料写成的吧。写了好久滴说。首先遇到的第一个难题是,建树问题。T T。开始我传递的是指针,发现怎么建都不对 = =。后来直接都用全局的调用,参数加个父树的线段的下标,虽然有点麻烦,但是确实是个办法。还有就是,原创 2011-08-08 17:27:30 · 1053 阅读 · 6 评论 -
悲剧,我的线段树有一个地方一直写繁了!!!
呜呜!!!! if( l < mid ) ans = min(ans,sub_query(node,L(t),l,r)); if( r > mid ) ans = min(ans,sub_query(node,R(t),l,r));类似这种的 T T ..之前写一直带等原创 2011-08-09 09:00:52 · 802 阅读 · 0 评论 -
hdu 1823 Luck and Love
继续二维线段树。这题坑姐啊!!!调了一晚上啊啊啊!!!不过也更理解二维线段树的更新过程了。我开始弄的二维的更新的可能更新到没有包含更新区间,也给更新了,昨晚躺在床上才想到T T。。。后来发现,又少写个等号,今早改后AC。很纠结啊,这个东西。想清楚了,刚把代码改得更简洁原创 2011-08-09 08:29:12 · 1223 阅读 · 5 评论 -
hdu 4007 Dave
大连赛区没希望了。我是一点力都没出上。我卡死到这题上了。这题之前做过一个圆覆盖的,所以想法很显然,求以每个点为矩形中心,这些个矩形的覆盖面积(或者退化成点)的最大覆盖次数。必须先离散化。想用树状数组,但是现在想想真的是很不明智,我树状数组好久没碰了原创 2011-09-03 19:43:51 · 1678 阅读 · 19 评论 -
poj 2482 Stars in Your Window
我用上一道题的方法把这个题A掉了。。。记得这题是做之前寒假后学树状数组碰到的,但是没做。前天比赛也想到这题了,没往深处想,以为不一样呢(因为当时很坚定我的想法呐。。。)赛后看了这个题,基本是一样了,比赛那题两个点可以重复,而且边缘的点也算,这个的话不是。依旧老做法原创 2011-09-05 14:10:45 · 1774 阅读 · 1 评论 -
hdu 2795 Billboard
刚开始咋想也想不通10^9啊,肿么用线段树啊啊啊。后来忍不住看人家的,才明白了。额。。。因为n最大为20W啊,只要开min(h,n)即可了。因为最多也就用n行。这么一来就很好写了。线段树最后一层存的是每行的剩余量,然后父节点存当前子树中最大连续空余。然后类似二分查找即可。原创 2011-08-07 17:39:32 · 1193 阅读 · 0 评论 -
zoj 2706 Thermal Death of the Universe
传说中的大妈套题啊。讲区间值转换为平均值。取平均值需要和之前区间总和和最初总和的状态有关,决定平均值是向上取整还是想下。其中计算上一次结束后的总和很简单,用之前的减去替换区间的值,再加上替换后的值即可,不用再用线段树求所有区间的总和,那样比较费时间。注意得用long原创 2011-08-07 12:56:55 · 791 阅读 · 4 评论 -
hdu 2492 Ping pong
囧啊。。最近很喜欢用“囧”。。。呵呵随便找个北京赛区的水题,居然就是线段树(树状数组),囧啊。。。这题是求以一个点为中点,前面比它小后面比它大的对数 以及 前面比它大后面比它小的对数 的和。第一反应用线段树。一个点一个点地插入,插入的时候,计算当前节点前比它小的,根据原创 2011-09-22 17:00:42 · 1379 阅读 · 3 评论 -
poj 3225 Help with Intervals(过题啦啦~)
这个题是线段树经典题目,相信学过线段树的童鞋一定见过。。我之前一直木有做,没仔细看,觉得应该不算太难,但是懒得做。。前天一ACMer跟我聊线段树,谈到一种情况,就是线段和点同时有意义的时候,我当时就想,那扩大二倍应该就没啥问题了,然后他就说到这个题了。。。然后我决定做一下原创 2011-09-27 14:07:25 · 2156 阅读 · 5 评论 -
poj 2528 Mayor's posters(之前写的有BUG,CSDN博客那篇文章不能修改,现删掉重发)
之前写的离散化有点问题,没有考虑边界情况,比如下面这组数据。31 101 3 6 10改掉离散化这个BUG有一种方法,挺麻烦的,就是如果相邻的两个数字间距大于1,就在这两个数字加点,保证不出现BUG。我之前的代码改了改,也去掉了这个弊端。刚跟聪哥讨论了下,我越发觉得,恩,我那种做法是正确的。嘿嘿。我的做法就是把点转化成线段,就是线段树的最后一层都是长度为1的线段,把原创 2011-07-30 17:14:41 · 1610 阅读 · 5 评论 -
hrebu OJ 数据结构1001 人工湖的公路
http://acm.hrbeu.edu.cn/index.php?act=problem&id=1001&cid=19昨天一小盆友问我的,我看了下,觉得不怎么难,还蛮好玩的,今早给过了。给你一条路(是个环),相邻的俩点之间的路可能断,也可以修复,问你俩点之间是否能连通。环的处理的话比较好办,直接路段长度延长1,相当于第n---1这段路。更新的时候注意下就好。查询的时候,因为是原创 2011-11-01 10:11:59 · 2434 阅读 · 6 评论 -
hdu 4107 Gangster
结点存当前区间伤害最小值,最大值,以及要加的伤害值。更新到如果最小值大于等于P,或者最大值小于P为止。时间卡很紧,一些不太注意的细节就会卡死 = =。。#include #include #include #include #include #include #include #include #include #include #include #include原创 2011-10-30 22:15:27 · 1948 阅读 · 12 评论 -
OpenJudge POJ 1028:Selecting World Finals Teams on Mars II
http://poj.openjudge.cn/practice/1028/百练上的题目,好怀念。我最开始都是在百练刷的中文题哦~~~有快100题了吧,(*^__^*) 嘻嘻……,水题一堆堆,所以对这个OJ感情蛮深的。。现在改成好多小组类型的了。。。这个是原创 2011-10-18 17:08:34 · 1068 阅读 · 0 评论 -
hdu 2871 Memory Control
神题啊。。。神题总是被这么多人虐。。也虐了这么多人。。。依旧线段树。内存操作,读题需仔细。。。一个地方没考虑全,结果RE死了。。。后改了,然后一个地方想错,结果WA死了。。。结点里记录的是,从左端起连续的空白个数,右端起,以及这个区间最大的连续空白处,用于NEW操原创 2011-10-08 23:11:09 · 1323 阅读 · 2 评论 -
hdu 3874 Necklace
使用VIM过的第二个题....最多的错误是CE !!!VIM的全选粘贴太麻烦了!!! ggVG"+y 纠结啊,经常粘错。。。呜呜有一次粘错,把我代码所有大写都变成小写了,呜呜。。这个题依旧线段树。开始没思路。。。看别人的了,唉。离线做会好做写,按结束坐标排序原创 2011-10-16 15:46:40 · 1821 阅读 · 4 评论 -
UVA 11983 Weird Advertisement
继续种树~~之前ZXL童鞋说那俩题不好做,我就先隔过去啦~然后就UVA这个题啦。和之前差不多,求至少K次覆盖的区域面积(虽然是求点数,但是可以转化为面积哈,因为我用的不是点树哈)。和3642差不多,这里的K最大是10,所以可以采用一样的方法。关键是怎么找规律,总不能写原创 2011-10-14 17:20:36 · 1467 阅读 · 0 评论 -
hdu 3308 LCIS
依旧线段树。这题以前见过,没仔细看题,以为求的是最长XX子序列。。。不过这个题简单了,是求连续的最长子序列,这个很显然了,结点里建立三个域,从左边起最长的连续序列,从右边起,以及这个区间中最长的。。。(这种做法是某些题的通法了,看来。。)更新的时候,注意左原创 2011-10-06 19:12:09 · 1233 阅读 · 1 评论 -
Codeforces Beta Round #43 D. Parking Lot
及其类似POJ 3667 hotel,这个题我一直没忘。。囧。。不过这个题稍微简单点。停车位,停一辆车需要连续的一段和,其中包括与前面车的间距和与后面车的间距(方便倒车),在路端的车可以不用考虑前方距离。这样的话,把路扩长 b + f ,这样的话,就不用考虑路端情况了原创 2011-10-05 22:36:47 · 1015 阅读 · 0 评论 -
UESTC 1425 Another LCIS
继续种树哈~~类似之前做的hdu的LCIS,不过这个操作是,某个区间加上一个值。基本操作和之前那个LCIS差不多,只不多我LCIS结点里没存左右端点的值,直接映射到数组了,但是这个不存的话会很麻烦。。所以纠结了一会,后来把端点信息存到结点里,改变的时候向上更新就没问题原创 2011-10-09 21:18:58 · 1211 阅读 · 1 评论 -
hdu 3255 Farming
这题没思路,zxl童鞋说,类似上题。。。豁然开朗。。。>想了想,这个就是长方体并啦~~因为这个每个方块的结果是x * y * price,把price当成 z 轴即可。可以统一设为x1, y1, 0 x2,y2,price 的一个长方体,求并即可。上个代码改改就没问题原创 2011-10-13 21:55:20 · 1208 阅读 · 0 评论 -
hdu 3642 Get The Treasury
线段树。给你N个方体区域,求覆盖三次以上(包括三次)的区域的体积。在sha崽的线段树扫描线分类。。。开始纠结了,这个三维咋转化成一维的呢。。给的坐标是蛮小的。有人说是枚举z坐标。。想了想。因为之前的矩形面积交那个题,印象不是太深,又重新把那个题给看了。在那个题的基础上原创 2011-10-13 15:02:44 · 2583 阅读 · 1 评论 -
poj 2991 Crane
线段树,伤不起!!!从30号回家的路上开始构思。。。想差不多了,然后回家写,写完过不去,和zxl童鞋交流,发现我题意理解错了!!!我理解的那个角度是和Y正半轴的夹角,哪知道是俩线段之间的夹角,纠结。。1号出去玩了,没做。2号晚上做了,改差不多了,生成的几百组数据和原创 2011-10-03 13:50:18 · 1689 阅读 · 0 评论 -
zoj 1391 || poj 1436 Horizontally Visible Segments
给你N条线段(垂直于x轴)的两个y坐标还有x坐标,问相互看到的三元组有多少个。相互看到指能用一条水平线连起来而且不经过其他线段。刚开始就想到暴力了,可是很纠结的,如果用线段树计算出相互能看到的对数,然后再暴力,这个时间复杂度不会算,囧。。。虽然才8000线段,应该不是原创 2011-09-28 13:51:32 · 1881 阅读 · 0 评论 -
poj 3368 Frequent values
求给定不下降序列区间出现元素次数最多的次数。节点信息:区间最左侧元素,最右侧元素,最左侧元素连续出现次数,最右侧元素连续次数,整个区间最多出现的次数。因为是不下降序列,所以如果出现多次,必然是相邻元素。然后线段树从节点往父节点合并更新即可。#include #i原创 2011-08-07 16:20:06 · 1326 阅读 · 3 评论 -
hdu 4000 Fruit Ninja
求得XYZ,XZY 再求得XYZ,然后相减即答案 = =。。脑子笨死了,赛场卡在第5题了,这题没怎么想。求XYZ,XZY只需求X后有多少个比它大的,求下C(n,2)求XYZ求 Y前面有比它小的后面比它大的数,两个数乘下。昨晚用线段树了,擦边过。。时间好长。今早试了下树原创 2011-09-03 09:58:03 · 1433 阅读 · 0 评论 -
zoj 3279 Ants
简单线段树。改变level的数量,询问第几个的level是多少。#include #include #include #include #include #include #include #include #include #include #defin原创 2011-08-05 21:54:28 · 808 阅读 · 0 评论 -
ural 1019. Line Painting
http://acm.timus.ru/problem.aspx?space=1&num=1019呃,搜线段树题呢,瞟到URAL这个了。很水啊,还是染色问题,但是没好好看题,The segment of numerical axis from 0 to 10^9 is paint原创 2011-07-28 09:07:25 · 1874 阅读 · 0 评论 -
poj 3264 Balanced Lineup
线段树水题,寻找区间最大最小值。只要建树还有查询操作就好了,更新没必要写。。#include #include #include #include #include #include #include #include #include #include #d原创 2011-07-28 13:53:12 · 1372 阅读 · 0 评论 -
hdu 1698 Just a Hook
线段树水题,成段更新,然后求和。注意将父节点的性质传递到子节点即可。看了几道难的,不会啊。。。。= = 。。。先刷点水的吧。。慢慢来。。#include #include #include #include #include #include #include #i原创 2011-07-27 16:09:43 · 863 阅读 · 0 评论 -
hdu 1166 敌兵布阵
线段树水题。有三种操作,x点加sum人,x点减sum人,求出 x 到 y 的和。每个父节点加一个节点保存下面子树的和即可。减人的时候,增加负的值即可。1Y,嗨皮~#include #include #include #include #include #include原创 2011-07-27 12:42:00 · 1398 阅读 · 0 评论 -
hdu 1754 I Hate It
继续线段树水题。求区间最大值,修改单个点。因为我还是采取的第一种建图方式,所以我修改单个点的话,比如修改1这个点,对应的我的区间应该是[1,2](你完全可以想象成左闭右开嘛)。这样的话,每个节点设置一个值,保存这棵子树的最大值。更新的时候,回溯的时候更新父节点即可。查询的时候,比原创 2011-07-27 10:43:54 · 919 阅读 · 0 评论 -
zoj 1610 Count the Colors
线段树水题。注意更新子节点,如果遇到的父节点已经被颜色覆盖掉的话,父节点 的颜色需要往下传递(因为父节点已经不会是原来那种颜色了)。#include #include #include #include #include #include #include #inc原创 2011-07-27 08:34:14 · 1810 阅读 · 2 评论