线段树
orzqqqqqqq
这个作者很懒,什么都没留下…
展开
-
2017 ACM Arabella Collegiate Programming Contest-L. All’s Wall That Ends Wall
墙高:a数组。预处理:先找到最高的墙壁的下标maxid,然后从左到maxid,从又到maxid进行遍历,可求出水柱高度w数组。后面的更新:分3情况:(1):当前更新的点为最大值,记下标为pos,则找到除当前点的次大值的下标id,以a[id]为水柱高度更新(pos,id]或[id,pos),pos位置水柱高度为a[pos]。(2):左边最大值大于a[pos],右边最大值小于a[pos],原创 2017-09-12 21:46:51 · 505 阅读 · 0 评论 -
codeforces 916E
dfs序+线段树+LCA。难点:更换树的根节点后,如何用线段树更新一子树和查询一子树。 更新时: 如果当前的根节点不在要修改的子树中时,直接成段更新区间即可。 若当前的根节点在要修改的子树中时,有两种情况:先更新【1~n】整个区间的值①(root既不是u的祖先也不是v的祖先)时,多修改了一部分,把多修改的那部分该回来,即u,v节点中包含root节点的那颗子树。②(与①条原创 2018-01-23 17:10:57 · 262 阅读 · 0 评论 -
牛客国庆集训派对Day6 I-清明梦超能力者黄YY
题解:lca预处理,树上差分套线段树合并复杂度O(nlogn)但是跑起来比树链剖分(nlognlogn)的还慢...........#include"bits/stdc++.h"#define lson l,mid,ls[rt]#define rson mid+1,r,rs[rt]using namespace std;typedef long long LL;const in...原创 2018-10-06 20:54:32 · 265 阅读 · 0 评论 -
hdu 5957 Query on a graph
题解: 毒瘤题......首先bfs跑一遍图,生成一棵树,则只有一条边没有用上而且这条边链接的两个点在该树上的深度差为<=1,即深度差为-1,0,1三种情况(因为深度差大于2的话,bfs就会选这跳边当做树边了)。 做完bfs序后就可以直接上线段树了,因为每一层的数刚好是连续了,分情况讨论,k=0,k=1的情况比较好写,但k=2的时候情况很多。。。。特殊边的点跟查找的...原创 2019-07-12 23:18:54 · 126 阅读 · 0 评论