模板与总结
文章平均质量分 53
Zhayan9QvQ
嘿嘿嘿
展开
-
LCA模板(倍增)
#include #include using namespace std;const int maxx = 500000 + 100;int head[maxx],depth[maxx];int n,m,x,y,root,num;int grand[maxx][20+2];bool done[maxx];struct Edge{ int next; int to;}原创 2017-01-25 11:49:01 · 369 阅读 · 0 评论 -
数据结构小题
题意给定一个n*m的方格地区,有以下两种操作。 1 x y 从坐标(x,y)的位置向四个方向释放无限长的红雾。 2 x1 y1 x2 y2 询问左上点为(x1,y1),右下点为(x2,y2)的矩形范围内,被红雾遮盖的地区的数量。 注意:释放红雾时脚下没有。 两块红雾会抵消对于100%的数据,1<=n,m,q<=100000解析我们可以在横轴和纵轴上分别建立树状数组,(加一,加第二次的话原创 2017-06-10 07:40:42 · 510 阅读 · 0 评论 -
单调栈模板题
题意N个人正在排队进入一个音乐会。人们等得很无聊,于是他们开始转来转去,想在队伍里寻找自己的熟人。队列中任意两个人A和B,如果他们是相邻或他们之间没有人比A或B高,那么他们是可以互相看得见的。写一个程序计算出有多少对人可以互相看见。解析维护一个不升的序列(单调栈…?)#include <cstdio>#include <algorithm>#define Rep( i , _begin , _en原创 2017-04-21 22:24:49 · 958 阅读 · 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 · 321 阅读 · 0 评论 -
【Bzoj2243】染色
题意给定一棵有n个节点的无根树和m个操作,操作有2类:1、将节点a到节点b路径上所有点都染成颜色c;2、询问节点a到节点b路径上的颜色段数量(连续相同颜色被认为是同一段),如“112221”由3段组成:“11”、“222”和“1”。请你写一个程序依次完成这m个操作。应该是我太水了来着…?打了一小时调了一天,主要就是注意合并时判断中间部分的端点颜色,如果一样的话统计时就要减1。然后在get函数中也一样原创 2017-03-16 21:41:08 · 378 阅读 · 0 评论 -
【Bzoj1036】树的统计
题意一棵树上有n个节点,编号分别为1到n,每个节点都有一个权值w。我们将以下面的形式来要求你对棵树完成一些操作:1.把结点u的权值改为t2.询问从点u到点v的路径上的节点的最大权值3.询问从点u到点v的路径上的节点的权值和注意:从点u到点v的路径上的节点包括u和v本身一棵树上有n个节点,编号分别为1到n,每个节点都有一个权值w。我们将以下面的形式来要求你对棵树完成 一些操作: 1.把结点u的权值原创 2017-03-12 15:57:14 · 293 阅读 · 0 评论 -
Treap模板【玄学】
一个很好玩的Treap模板。#include #include #include using namespace std;const int maxx = 100000 + 100;int n,m,num,flag,Ans,x,root;struct Node{ int lc,rc; int fix,v; int cnt,size;}T[maxx];原创 2017-02-07 11:56:57 · 369 阅读 · 1 评论 -
树链剖分总结
树链剖分….等等等等 这是题目总结,反正就是把各种水题放到一起。然后数组意义的话,dpt深度,son重儿子,ftr父亲,rnk线段树中编号,size是子树大小,top是重链顶端的结点。【Bzoj1036】树的统计比较裸,维护区间和与最大值就好了。【Bzoj4034】树上操作也是模板,对于子树只要记一个end[x]就行了。【Bzoj4396】软件包管理器安装操作就是将软件包到根全都赋为1,然后输出改原创 2017-03-26 09:54:13 · 363 阅读 · 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 · 378 阅读 · 0 评论 -
【Bzoj3531】旅行
题意:有n个城市,每个城市有权值和颜色,支持的操作有单点修改权值,单点修改颜色,查询区间同颜色之和,查询区间同颜色最大值。思路:对于每种颜色,放入不同的线段树,但其实整个加起来还是还是n个结点,值得注意的是,这里要使用动态开点,要一步步记录左右儿子的编号,而不能使用2i,2i+1直接去找,而这样建树的话,就可以很方便的查询同颜色的结点了,修改操作啥的把原颜色中的结点改为0,再在现在的颜原创 2017-03-19 15:43:18 · 416 阅读 · 0 评论 -
【瞎扯】树上差分的基本思路
数据结构题中解法千变万化,但分析最近几年的趋势来看,有一种比较重要的思想->树上差分。(会树剖的大神不要嘲笑,虽然很多时候树剖都能很好解决QwQ)。至少,树上差分熟练的话还是可以解决很多问题的。这里就先分析两种基本的差分思路。1.找被所有路径共同覆盖的边。可能这样讲不是很详细,那就看一道例题【Noip2015】运输计划(【Bzoj4326】)。大意是有许多条运输路径,让你在把一条边的用时不原创 2017-02-12 09:30:25 · 6221 阅读 · 6 评论 -
【codevs1080】线段树练习1
线段树是OI中特别重要的数据结构部分,这里提供了三种此题的模板,以供大家参考。1.树状数组:优点:空间复杂度小,实现容易。缺点:操作少,有些时候难以用上。注意:lowbit函数用来保存2进制的最后一位1,然后还要用到前缀和思想。树状数组:#include using namespace std;const int maxx = 500000 + 100;in原创 2017-01-21 16:36:06 · 446 阅读 · 0 评论 -
【Bzoj3196】2B平衡树
题意您需要写一种数据结构(可参考题目标题),来维护一个有序数列,其中需要提供以下操作: 1.查询k在区间内的排名 2.查询区间内排名为k的值 3.修改某一位值上的数值 4.查询k在区间内的前驱(前驱定义为小于x,且最大的数) 5.查询k在区间内的后继(后继定义为大于x,且最小的数)解析唔…看到这个标题 啊啊啊是你吗2B小姐姐!! 好了不发神经这是个灰常普通的树套树模板,一般会用线段树套原创 2017-06-14 21:41:52 · 770 阅读 · 0 评论