线段树
文章平均质量分 76
Lei2015_
这个作者很懒,什么都没留下…
展开
-
CodeForce Round 215 DIV2 C 使用了线段树 但是多此一举...
这道题的题意蛮复杂,但是抽象出来就是统计一下xyz的个数分别是多少,如果最大相差不超过1,那么就可以,否则不可以。阅读了一下其他人的代码,发现都是随便保存了一下前缀后缀什么的就过了。所以,这种明显可以用线段树,但是找不到需要更新的地方的题目就不要用线段树了,保存一下“前缀和”,就可以O(1)的回答,线段树还要O(longn)想起来长沙那道A题,别人过得那么快,自己过得那么慢就是因为弄复原创 2013-11-27 02:12:02 · 715 阅读 · 0 评论 -
CodeForces Round 213 Div 2 E Sereja and Brackets 线段树
我本来觉得这个题不能用线段树的,因为联想到从前做的有关括号的匹配的问题好像都是DP的,如果直接线段树的话就有点贪心的意思。但是仔细想想,这题只是匹配,用线段树非常合适,因为括号分成两部分,左边和右边,线段树也都是二分的,所以统计每一层节点的 左括号, 完整括号 和右括号,上一层的节点的 完整括号就等于 用左儿子的左括号匹配右儿子的右括号 再加上完整的括号就可以了。非常易用的可加性。还是个没有更新的原创 2014-01-13 15:22:22 · 884 阅读 · 0 评论 -
Codeforces Round 200 Div1 D Water Tree (树上线段树)
本来早就应该做的,拖拖拖一直拖到了现在。这个题信息量真大。 树上的括号序列,就是按照 dfs 的时序,存在包含关系的节点有祖先儿子关系。 这个题中有三个操作 1 是向某节点加水, 2 是抽水 , 3 是观察 加水之后,所有的儿子也都加满水,放水之后,所有的父亲也都被放水。 这里 data[x][0] 代表 x 是最后被加满时间 data[x][1]原创 2014-01-19 01:07:49 · 729 阅读 · 0 评论 -
线段树。。。POJ 2777
虽然我知道这么水的题是不应该写题解的。。但是长时间不写的话 感觉自己好像好久没刷过题了。。就是裸的线段树一共30种颜色,一开始我每个节点用个 color[30]来记录...结果T了然后想到用位运算,然后A了。#include #include #include #include using namespace std;#define lson l,m,rt<<1#de原创 2014-02-15 18:48:16 · 506 阅读 · 0 评论 -
HDU 3308 线段树。。最长连续上升子序列
这个被 notonlysuccess 归类为区间合并想来区间合并的题 PushUp 不但更新的时候会用到,左右两个孩子得到的结果也要用 PushUp 处理,就换了一下PushUp的形式。爽写着写着。。不知不觉这宏就变的越来越多了。#include #include #include #include #include #include #include #include原创 2014-03-03 23:50:48 · 737 阅读 · 0 评论 -
poj 3225 线段树 经典题
泪奔。。。终于A拉。网上已经有很多的题解了。。。就不详细描述了。集合的操作还是蛮有趣的。线段树原来可以这么灵活啊0 1 的覆盖即使有区间操作也用不着重新写个标记还有 线段树 中 如果操作的是区间的话 (端点和内部的点都有意义) 那么点的数量扩大两倍。经过一题。。感觉线段树的 level 又提升了呢。。#include #include #include #原创 2014-03-03 19:47:42 · 485 阅读 · 0 评论 -
POJ 1151 线段树 矩形面积并
推荐一篇论文 http://wenku.baidu.com/view/1856cf84b9d528ea81c77918.html把Y 方向上的坐标离散了按照论文里描述的扫描线的思想。设计线段树每个节点的数据结构我设计的是struct node{ double y1,y2; double len; bool cover; int cnt;// t原创 2014-03-04 15:36:30 · 621 阅读 · 0 评论 -
POJ 3368 区间数字出现最多次数
因为序列是不减的,所以应该是 233333 这样的序列,我们可以从下面二分的序列得到我们想要的序列,所以可以用线段树来做,普通的区间合并。分类是 RMQ。。一会再写的 RMQ 版本的。。#include #include #include #include #include #include #include #include #include #include #in原创 2014-03-28 14:31:50 · 859 阅读 · 0 评论 -
POJ 2750 环上线段树 略带DP 的线段树
求一个环上的最大连续子列的和。但是这个区间不能是整个换。做法:把环拆开。对于最大连续子列,有两种情况第一种情况,子列在 1~n 中,这样便可以直接求出第二种情况,子列既包括 1 又包括 n ,首先 最大列和最小列应该是不重合的(除非全是正数),如果重合,假设重合点是正数,则最小列可以更小,如果重合点是负数,则最大列可以更大,矛盾,然后,最大列和最小列应该全部覆盖整个环,证明和上原创 2014-03-22 17:34:44 · 429 阅读 · 0 评论