![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
ACM 线段树
文章平均质量分 76
New_C_YUER
这个作者很懒,什么都没留下…
展开
-
poj 2777
<br /> 经典的线段树题目。具体解法是成段更新,在利用一个vis[]数组在查询一次整段区间时,记录没有被覆盖到的颜色,并对其所对应的编号标记为1.而在成段更新结点时,若某区间将出现混合色,就让其子节点更新为它的颜色,并标记该结点。总之,对于成段更新区间属性的题目一般用线段树来解决,使用时要保存结点属性的单一性,但更新破坏了这种单一性时,则应递归地保持该结点孩子的属性的单一性。只有这样,在更新操作才不至于退化到O(n)的复杂度,保证高效率。<br /> <br /> 以下是代码:<br原创 2011-05-16 13:32:00 · 526 阅读 · 0 评论 -
poj 2528
<br /> 经典的线段树+离散化。我还不会离散化,学习了。<br /> 本题的线段区间很大,如果直接模拟不是mle就是re,但实际插入的点很少,所以要离散化每个插入的区间,然后对离散化后的区间构造线段树。所谓离散化,个人的理解是自行构造一个函数,使得原数轴上的区间与自定义的数轴的区间形成一一对应的关系,从而压缩了整个区间,减少空间复杂度。这里只要跟着我的代码,用题中的样例模拟一下就可以懂的了。<br /> 以下是代码:<br /> #include<cstdio><br />#i原创 2011-05-17 13:23:00 · 524 阅读 · 0 评论 -
poj 2182
<br /> 题目意思很忽悠人,其实和poj 2828一模一样。就是对于一个序列,其数值为前面比它小的数值个数,最后输出在此下标下每个值所对应的真是排名(很拗口,最好看看poj 2828,意思是一样的)<br /> 这道题的解法很简单。对于给定序列从前往后扫描,对于每个数值a[i],每次顺序地把a[i]+1个元素删去(用个数组vis记录情况),则其实际排名则是最后循环j所停留的位置。<br /> 可能说得很笼统,就先看一下这个O(n*n)的代码吧,看了就明白了:<br /> #inc原创 2011-05-25 00:34:00 · 1434 阅读 · 0 评论