![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
线段树
Zookkk
这个作者很懒,什么都没留下…
展开
-
HDU 4521小明系列问题——小明序列(线段树)
题目要求:给一段序列a,求满足每个元素在原序列里位置至少相隔k的最长上升子序列。这个问题我们有3种解决方法,LIS魔改算法,线段树,动态规划。在这篇博客中,我们讨论的是通过线段树来解决这个问题。我们将我们构造的树的叶子节点用来储存1到这一点的满足题目要求的最长上升子序列的长度,然后不断维护最大值。具体代码如下:#include<bits/stdc++.h>using...原创 2018-09-03 20:43:52 · 180 阅读 · 0 评论 -
线段树单点修改
写了这么久的线段树了,一直没有把以前写的线段树记下来,搞得每次一碰到线段树就又要手敲一遍#include<bits/stdc++.h>using namespace std;#define inf 0x3f3f3f3fconst int maxn=1e5+9;int T[maxn*4];void pushup(int rt){ T[rt]=T[rt<<...原创 2018-11-27 21:47:01 · 208 阅读 · 0 评论 -
线段树区间修改
再补个线段树区间修改的板子#include<bits/stdc++.h>using namespace std;#define inf 0x3f3f3f3fconst int maxn=1e5+9;struct node{ int lazy,val,l,r;}T[maxn*4];void pushup(int rt){ T[rt].val=T[rt&l...原创 2018-11-28 20:34:36 · 261 阅读 · 0 评论 -
南昌网络赛 I题 单调栈+线段树 The Preliminary Contest for ICPC China Nanchang National Invitational
单调栈:栈里面的元素全部都是单调递增或单调递减的栈思路:枚举每个元素作为最小元素所能管辖的区间,通过单调栈从1~n扫一遍找到右边界,再从n~1扫一遍找到每个元素所能管辖的区间的左边界,具体的操作就是当前元素小于栈顶元素是,栈顶元素出栈,界定其左(右)边界,重复此操作,直到当前元素大于等于栈顶元素,把当前元素入栈,找完每个元素所管辖的区间之后,我们再用线段树维护一下这个序列的前缀和,对于最小元素...原创 2019-05-04 13:29:40 · 180 阅读 · 0 评论 -
南昌网络赛 B题 线段树 The Preliminary Contest for ICPC China Nanchang National Invitational
思路:对给定的n个元素建一颗线段树,维护每个线段节点中以区间中的第一个元素作为最大元素的递减序列和tr[rt].sum。具体操作就是我们每次单点更新的时候,维护一下区间最小值,然后对于一个线段节点,通过计算它左孩子和右孩子的贡献值来更新自己,tr[rt].sum=tr[rt<<].sum+calcu(mid+1,r,rt<<1|1,tr[rt<<1].mi),c...原创 2019-05-05 02:05:35 · 145 阅读 · 0 评论 -
浙江省赛A - Vertices in the Pocket
思路:对于最小值,很简单,输出连通块的数量-k就行了对于最大值维护点的个数为k的连通块的个数(叶子节点是点的个数为k的连通块,内节点都是统计查询节点)及其它们点的总数和各连通块点数的平方和,并且每一次更新维护tot_cnt的值,tot_cnt代表在不减少连通块的前提下最多能放多少条边事实上,我们每一次更新加边,只有两种情况,一种是连通块内的两个点加边,另一种情况则是两个连通块内的点加边...原创 2019-05-08 01:12:42 · 219 阅读 · 0 评论 -
2019牛客暑期多校训练营(第八场)E.Explorer
题意:给你一张有着n个点的图,图上有m条边,每条边有一个属性[l,r]代表只有size在这个区间范围内的才能通过,你在一开始可以喝下一瓶魔法药水,改变自己的size,问你有多少种可能的size使你能从1号点走到n号点。思路:对size离散化,线段树节点存储size段,按秩合并幷查集判断是否连通,dfs从线段树根节点遍历所有可能到达的路径。详细操作:首先我们将题目给出的m条边的size从...原创 2019-08-18 15:29:38 · 230 阅读 · 0 评论