线段树
文章平均质量分 69
Zhayan9QvQ
嘿嘿嘿
展开
-
【Bzoj1878】HH的项链
1878: [SDOI2009]HH的项链Time Limit: 4 Sec Memory Limit: 64 MBSubmit: 3770 Solved: 1874[Submit][Status][Discuss]DescriptionHH有一串由各种漂亮的贝壳组成的项链。HH相信不同的贝壳会带来好运,所以每次散步 完后,他都会随意取出一段贝壳,思考它们所表达的含义。原创 2017-02-07 14:58:24 · 336 阅读 · 0 评论 -
【codevs1080】线段树练习1
线段树是OI中特别重要的数据结构部分,这里提供了三种此题的模板,以供大家参考。1.树状数组:优点:空间复杂度小,实现容易。缺点:操作少,有些时候难以用上。注意:lowbit函数用来保存2进制的最后一位1,然后还要用到前缀和思想。树状数组:#include using namespace std;const int maxx = 500000 + 100;in原创 2017-01-21 16:36:06 · 454 阅读 · 0 评论 -
【Bzoj2819】Nim
题意给定一棵树,两个操作: 1.询问若在v到u间的路径上的石子堆中玩Nim游戏,是否有必胜策略。 2.把堆v中的石子数变为k。作为一个解[ka]决[guo]了这道题的人,来分[kou]析[hu]一下算法,其实正解是Dfs序之后树状数组,但是因为懒就直接写了树剖,每个区间维护区间的异或值。因为异或的性质a^b^c=a^(b^c)。然后Nim游戏有必胜策略,当且仅当所有堆的石子异或起来不等于0,之后原创 2017-03-17 20:40:58 · 408 阅读 · 0 评论 -
【Bzoj1012】最大数
动态开点的线段树。#include #include using namespace std;const int maxx = 200000 + 50;const int Inf = (unsigned)(-1)>>1;int n=200000,m,x,y,flag,mod,pos,t;int T[maxx<<2];char s[2];void Build(in原创 2017-03-17 20:44:36 · 398 阅读 · 0 评论 -
【Bzoj2957】楼房重建
Description 小A的楼房外有一大片施工工地,工地上有N栋待建的楼房。每天,这片工地上的房子拆了又建、建了又拆。他经常无聊地看着窗外发呆,数自己能够看到多少栋房子。 为了简化问题,我们考虑这些事件发生在一个二维平面上。小A在平面上(0,0)点的位置,第i栋楼房可以用一条连接(i,0)和(i,Hi)的线段表示,其中Hi为第i栋楼房的高度。如果这栋楼房上任何一个高度大于0的点与(0,0)原创 2017-03-05 13:26:18 · 441 阅读 · 0 评论 -
【Bzoj1798】维护序列seq
题意线段树维护三个操作:区间加法,区间乘法,区间查询。分析需要打两个tag,注意先下放乘法之后再下放加法。#include #include using namespace std;typedef long long LL;const int maxx = 100000 + 50;LL T[maxx<<2],Add[maxx<<2],mul[maxx原创 2017-03-10 22:27:43 · 384 阅读 · 0 评论 -
树状数组求逆序对
…话说这不应该是学语言的时候学的嘛…#include <cstdio>#include <algorithm>#define Rep( i , _begin , _end ) for(int i=(_begin);i<=(_end);i++)#define For( i , _begin , _end ) for(int i=(_begin);i!=(_end);i++)#define Lop原创 2017-04-21 20:32:04 · 324 阅读 · 0 评论 -
【Bzoj4336】骑士的旅行
题意给一棵树,每个结点上可能有多个权值,可以每次改变某权值的值或者位置,多次询问一条路径上的前k大值。解析对于每个结点维护一个multiset,因为k很小,所以每次可以把两结点暴力合并,这样就只要把两个队列合并就可以了。#include <set>#include <cstdio>#include <algorithm>#define Rep( i , _begin , _end ) for(i原创 2017-06-24 22:40:19 · 848 阅读 · 0 评论