
线段树 树状数组
文章平均质量分 73
Cxiaokai
这个作者很懒,什么都没留下…
展开
-
hdu 1166 敌兵布阵
这个题目很快敲出来,但是还是出现一点问题。就是在写Query函数的时候,我定义函数的类型为int类型。直接返回结果就不对了。后来想想了想,因为线段树回溯的时候,会有合并操作。我那样返回值,值返回的是某个区间上的值,不是真正我想要的结果。这一点也提醒我写段树的所有函数的时候,最好都原创 2011-08-07 19:23:31 · 330 阅读 · 0 评论 -
poj 2155 Matrix
还是二维的树状数组,我写了一个,不知道为神马就过不去,很无语。看了别人的代码,发现可以对每个格子计数,计数之后,直接模2就是结果。我真是TT,怎么就没想到呢?!!但是我直接写一个更新而言不知道怎么错了。代码都贴一下吧。以便回国头来好好思考。AC代码:#include#i原创 2011-08-10 10:17:12 · 427 阅读 · 0 评论 -
poj 2029 && zoj 1716 Get Many Persimmon Trees
树状数组的题目,暴力水过。但是,我表示对树状数组理解的还不是很清楚。尤其是在更新值的时候,为啥有时候就要再原来的值上加1,有时候就不加。很多的东西都需要仔细的体会,真是..TT...不说了!#include#include#includeusing namespace st原创 2011-08-11 09:43:50 · 454 阅读 · 0 评论 -
poj 1195
这个题目应该好好考虑一下。为什么能用树状树状来解决。树状数组主要用于频繁计数,频繁修改者写操作。但是,这是在一个二维平面上,对给定的正方形里的yy数量进行统计。由于树状数组的特殊结构,它能够把当前点以前的数量都统计出来,由于效率比较高,通过变换操作可以把某个区间的数量在很短的时间原创 2011-08-10 09:03:48 · 1099 阅读 · 0 评论 -
poj 3067 && zoj 3129
树状数组继续刷。这个题目如果用__int64用zoj c++交,会显示compilation error改用long long 就过了。这个题目的特殊之处,可以将东海岸和海岸的程序有连线的当做二维平面上的一个点,东海岸的城市当做横坐标,西海岸的城市当做纵坐标。纵坐标从大到小排原创 2011-08-09 15:51:45 · 862 阅读 · 0 评论 -
poj 1177 && hdu 1828
求矩形并后的轮廓。陈宏的线段树对这个问题分析的相对的好。但是,我对这个扫描理解的还不是很透彻。需要回国头来再好好看看!我觉得,有些东西随着时间,自己慢慢琢磨琢磨,多回国头来看看,也许不经意间,就能理解很多了。最终也就明白了!#include#include#include原创 2011-08-09 11:42:07 · 488 阅读 · 0 评论 -
截部分陈宏对用线段树解矩形并的轮廓(picture 问题的深入讨论)
Picture问题的深入讨论基于对数据结构选择的进一步分析,我们来重新考虑一下Picture问题的数据结构的选择,即采用树形结构来描述一组超元线段的状态。一、线段树受到累计扫描过程的启发,一组超元线段属于轮廓的数目,它与跨越该组超元线段的矩形的纵向边位置关系密切。不妨转载 2011-08-09 11:35:49 · 1576 阅读 · 0 评论 -
数状数组
接下来正式入题.首先我们可以借鉴元素不变更问题的优化方法,先得到前i-1项之和and前j项之和,以s[i]表示前i项之和,那么sum[i,j]=s[j]-s[i-1].那么现在的问题已经转化为求前i项之和了.另外,我们已经确定要存储一些特定区间的和,现在就要来揭示这些特定的区转载 2011-08-08 19:48:10 · 418 阅读 · 0 评论 -
poj 2481 Cows
我表示对树状数组很没感觉。也许是刚学到缘故吧。很可能随着时候的增长,知识的积累,经验的积累,会很好的掌握的。我想说的 此题,跟poj 2352没有多大的区别。但是,我没有做好这个题目,关键还是对 lowbit(x) , Getsum(x) , updata(x)这三个操作很好原创 2011-08-09 10:11:16 · 629 阅读 · 0 评论 -
poj 2352 Star
树状数组第一题。磕磕碰碰,照写人家的代码,和配合大牛博文的解析,终于差不多全理解的数组数组到底怎么一回事情了。据说,树状数组的题目,都可以那线段树来写,以后也那线段树来写一下这个题目。#include#include#include#includeusing原创 2011-08-08 20:37:26 · 553 阅读 · 0 评论 -
hdu 3265 Posters
这是09宁波Regional Contest 一道计算几何的题目。题目还是比较简单的。大致也是求矩形面积的并。但是有一点点的变化。关键是代码稍微有点长,其实题目很简单。解决方法还得典型的离散化+线段树+扫描线。代码如下:#include#include#inclu原创 2011-08-08 16:19:14 · 622 阅读 · 0 评论 -
poj 1389 Area of Simple Polygons
完全相同与poj 1511,可以直接离散化来做,也可以”离散化+线段树+扫描线“搞定,方正方法不止一种;离散化的程序:#include#include#include#includeusing namespace std;#define N 1002int t原创 2011-08-08 16:10:08 · 600 阅读 · 0 评论 -
poj 1151 && hdu 1542 求矩形面积并(线段树)
线段树的做法大致如下: 1输入每个矩形,标记左边1,右边0,并记录矩形的横坐标与纵坐标; 2离散化处理。将矩形的横坐标和纵左边排序; 3对纵坐标进行去重; 4建立线段树,用纵坐标重后的个数来建立线段树;原创 2011-08-08 11:07:40 · 1008 阅读 · 0 评论 -
hdu 1754 简单的线段树
这个题目是比较简单的线段树,不过还是想说几句。这个线段树涉及到的操作有建树(这不是废话吗,线段树怎么能不建树呢!),还有就是更新和询问操作。为了节省时间,我们可以把非叶子节点可以用来记录这个区间的最大分数,如果访问到这个区间,直接输出最大分数值就可以了,不必要每次都询问到叶子节点原创 2011-08-07 15:20:46 · 440 阅读 · 0 评论 -
hdu 1698 Just a Hook
线段树,继续刷。这个题目是poj2777的简单版本。poj 2777是区间涂色问题。给出的颜色不超过30中,每一个值代表一种颜色。但是这个题目给定的三个环,每个环都有一个固定的权值。处理方法是一样的。非叶子节点所在地区间。如果环不止一种的话,就可以用-1来标记。如果是一种的话,就原创 2011-08-08 10:22:41 · 317 阅读 · 0 评论 -
poj 3468 A Simple Problem with Integers
线段树的变形很的,考线段树我觉得就步仅仅是简单的线段树。如果那样很好写,写出来也肯定超时。现在我就写了个超时的程序,现在先贴一下。由于线段树有很多变形,还有很多优化的技巧。我还真的学一下,好好学一学。现在只是停留在线段树的初级阶段。很多技巧还等着我去学,我要努力了!超时的代码原创 2011-08-07 20:53:42 · 416 阅读 · 0 评论 -
poj 2777 区间统计
这个题目我想说一些。由于数据量比较大,如果每次建树,更新叶子节点,时间的开销是相当大的,超时是必然的。这个题目是成段更新区间。如果非叶子节点所在的区间的颜色不止一种的时候,这个基点赋值一个不可能的颜色值,就赋值为-1了。如果某个区间的颜色单一,就赋值为这个颜色的值。这样有助于区间原创 2011-08-07 16:53:52 · 425 阅读 · 0 评论 -
zoj 1610 线段的涂色
要学会的是懒操作。这个题目跟北大的2777差不多,只是在计数的时候,有了变化。还有这个题目建树的时候需要注意一下。我建树建立错误,得到Segmentation Fault,从来没遇到过这样的错误,现在长见识了。现在得好好总结一下这种线段树的做法了。类似于线段涂色的这种题目,建原创 2011-08-11 18:58:56 · 565 阅读 · 0 评论