![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
ACM-数据结构
文章平均质量分 77
czhou0
这个作者很懒,什么都没留下…
展开
-
POJ 2352 Stars(树状数组)
有一些点,某个点的 level 被定义为在它左下的点的个数,问各 level 各有多少点。 由于输入时 y 坐标是增序来的,所以可以忽略 y,用一个树状数组 c [ x ] ,来表示目前在坐标 x 以左的点的个数。 #include #include #include using namespace std; int c[40000]; int lowBit(int x){ retu原创 2012-07-13 00:11:54 · 192 阅读 · 0 评论 -
POJ 2492 A Bug's Life (并查集)
有一些昆虫,给出若干它们的配对关系,判断其中是否有虫子搞基。 一开始也是想到并查集,但是没有想到怎么实现,后来参考了一下人家的做法。 精髓是要设一组变量,标记每只虫子的第一个对象。边读取数据,边更新这组变量和并查集,直到找到基佬就OK。 #include #include using namespace std; typedef struct{ int father; int co原创 2012-07-10 23:42:30 · 434 阅读 · 0 评论 -
POJ 2528 Mayor's Poster(还是线段树,外加离散化)
题目意思是在一道墙上贴海报,后面贴的海报可能把前面的覆盖,之后给出一个区间,要输出这个区间内能够看见的海报数目。 乍一看非常像POJ 2777涂颜料那道题目,仔细一想还是有很大的不同。首先海报数量十分巨大,不可能用上位运算,这也意味着每次query都要查询到线段树的叶。其次墙所表示的区间十分大,即时能够被 __int64 表示,过大的区间也很容易造成MLE。所以要用上离散化,将整个区间缩小到相对原创 2012-07-04 22:16:52 · 337 阅读 · 0 评论 -
POJ 3468 A Simple Problem with Integers(线段树、lazy思想)
题目大意是给出一串数学,之后可能对某个区间内的所有数字都增加一定的量,也可能对某个区间进行查询,要求返回这个区间内所有数字的和。 Training 给出了8 道关于线段树的题目,手气好第一道就抽中最简单的。但是还是被折腾了不少时间,一开始用最简单的方法对每个区间进行update,试了几次都是TLE。后来才发现其实可以不用每次都update所有区间。Update时,如果到一整个区间都需要updat原创 2012-07-04 22:16:03 · 225 阅读 · 0 评论 -
POJ 3264 Balanced Lineup(第一道线段树)
是summer training code section里的一道题目,当时没有做出来。由于第一次接触线段树,一开始尝试用min_element() 和 max_element(),结果必然是TLE了。。 另外这道题目的坑爹之处就是用 cin、cout 会TLE,换成scanf、printf 就没有问题。看来还是 cstdio 比较快一些。 其实是线段树中非常简单的一道题目。附上代码: #原创 2012-07-04 22:15:40 · 253 阅读 · 0 评论 -
POJ 2777 Count Color(线段树、lazy思想)
大意是一块定长的木板,在上面涂颜色,每次涂一个区间,当询问某个区间时,要返回这个区间中的颜色数目。 这道题目其实和3468非常之像,也是要更新区间,也用到了lazy思想。可能略有不同的是,这道题目有个用到位运算的小技巧。由于总颜色数目较少( #include #include #define MID(x, y) ((x + y) >> 1) #define R(x) (x << 1 | 1原创 2012-07-04 22:16:21 · 247 阅读 · 0 评论