随笔分类 - 数据结构——线段树
1
摘要:攻击武器和怪兽是单调的,只用关心防御武器够打的怪兽,是一个前缀和。 我用线段树上的叶子值表示前缀和,这样每次插入一个怪兽,需要进行区间修改操作。 /* * @Author: chenkexing * @Date: 2020-03-06 11:53:04 * @Last Modified by: ch
阅读全文
摘要:2019牛客国庆集训派对day3 链接:https://ac.nowcoder.com/acm/contest/1108/E来源:牛客网 题意 在一个$10 ^ 9 * 10 ^ 9$ 的方格中,每次把$[l, r]$的每一行整行连通(行间没关系),或者把$[l, r]$列连通,输出连通块的个数,操
阅读全文
摘要:link Gym - 102222、2018宁夏邀请赛、2019银川icpc网络预选赛 current: 10 / 13 👌A. Maximum Element In A Stack 👌B. Rolling The Polygon 👌C. Caesar Cipher 👌D. Take You
阅读全文
摘要:题号标题已通过代码题解/讨论通过率团队的状态 A All-one Matrices 点击查看 单调栈+前缀和 326/2017 通过 B Beauty Values 点击查看 进入讨论 827/1995 通过 C CDMA 点击查看 进入讨论 669/1115 通过 D Distance 点击查看
阅读全文
摘要:E-Find the median 题意 n次操作,($n \le 400000$),每次给出$L_i, R_i$向集合中插入,让你把$[L_i, L_i+1, L_i+2, ... , R_i]$ 插入到集合中,同时输出集合的中位数。 集合一开始为空,($1 \le L_i, R[i] \le 1
阅读全文
摘要:Solved Pro.ID Title Ratio(Accepted / Submitted) 1001 AND Minimum Spanning Tree 31.75%(1018/3206) 1002 Colored Tree 0.00%(0/105) 1003 Divide the Stones 10.35%(126/1217) 1004 ...
阅读全文
摘要:1002 Blow up the city 支配树的思想,u有多个父节点,直接连向他们的lca #include <algorithm> #include <iterator> #include <iostream> #include <cstring> #include <cstdlib> #in
阅读全文
摘要:CF 题意 有一个长度为n × k (<=1E9)的数组,有区间修改和区间查询最小值的操作。 思路 由于数组过大,直接做显然不行。 有两种做法,可以用动态开点版本的线段树,或者离线搞(还没搞)(搞好了)。 注意只有1E5次操作,所以真正被更新到的区间并不多,最差单次新开2×log(1E9)。 对于新
阅读全文
摘要:1007 High Priestess 埃及分数 1008 Lovers 线段树维护取膜意义下的区间s和。 每个区间保存前缀lazy和后缀lazy。 #include <iostream> using namespace std; #define pb push_back #define fi fi
阅读全文
摘要:CF # 题意 总共有5000条线段,这些线段要么水平,要么垂直,问这些线段组成了多少矩形。 # 思路 这是一个n*n*(log)的思路 自己一开始想着枚举两条垂直边,想着怎么把水平的边插入,再进行冗斥等数出与两边都相交的数量。但是做不出来。 后来学习了如图的思路。 我们枚举垂直边,对于i 来说,因
阅读全文
摘要:题意 有一个只包含1和2的序列,试翻转一个区间,使得结果中非连续非递减数列最长。 思路 一、 作出1的前缀计数和为cnt1,2的后缀计数和为cnt2, 由于要找出【1,1,1】【2,2,2】【1,1,1】【2,2,2】的四段,设中间的分割点是p,k,q,可得到 ans=cnt1[p]+cnt2[p+
阅读全文
摘要:传送门 思路: 这道题要把给定的每个坐标利用切比雪夫坐标表示,这样两个点的距离就是max(dx,dy),而不是一开始的dx + dy,有利于线段树的维护,又由于询问的是区间的最大差值,限制是两个点是属于不同门派的,所以我们可以维护每个区间的最大,次大值,最小次小值。 #include <algori
阅读全文
摘要:传送门 题意: 有m个区间,n个$a[ i ]$ , 选择若干个区间,使得整个数组中的最大值和最小值的差值最小。n<=1e5,m<=300; 思路: 可以知道每个i,如果一个区间包含这个点,就让这个区间发挥作用。枚举每个i,找到最大值即可。 当然这个复杂度不对,我们可以通过线段树保存数组的最大值和最
阅读全文
摘要:Successor:http://acm.hdu.edu.cn/showproblem.php?pid=4366 参考:https://blog.csdn.net/colin_27/article/details/37811157 题意: 有一个公司,每个员工组成一个树形结构,每个员工都有一个能力值
阅读全文
摘要:Apple Tree:http://poj.org/problem?id=3321 题意: 告诉你一棵树,每棵树开始每个点上都有一个苹果,有两种操作,一种是计算以x为根的树上有几个苹果,一种是转换x这个点上的苹果,就是有就去掉,没有就加上。 思路: 先对树求一遍dfs序,每个点保存一个l,r。l是最
阅读全文
摘要:SPOJ - GSS1:https://vjudge.net/problem/SPOJ-GSS1 参考:http://www.cnblogs.com/shanyr/p/5710152.html?utm_source=itdadao&utm_medium=referral 题意: 给定一个数列,很多次
阅读全文
摘要:HDU-6356 题意: 有m次操作,每次操作通过给定的随机函数生成 l , r , v,使得在 l 到 r 区间内,所有的$a[i]$变为$max(a[i] , v)$. 最后输出n个$a[i]* i$的异或和。 思路: 线段树操作,每次维护区间的最小值,如果当前的v小于区间的最小值,直接retu
阅读全文
摘要:hdu 6315 题意: 对于一个数列a,初始为0,每个a[ i ]对应一个b[i],只有在这个数字上加了b[i]次后,a[i]才会+1。 有q次操作,一种是个区间加1,一种是查询a的区间和。 思路: 线段树,一开始没用lazy,TLE了,然后开始想lazy的标记,这棵线段树的特点是,每个节点维护
阅读全文
摘要:参考:https://blog.csdn.net/ophunter_lcm/article/details/9879495 题意: 有n个花瓶,有两种操作,1.从a开始放b朵花,有花的花瓶跳过,2.把a到b间的花全部拿下来。 思路: 线段树+二分 利用二分确定区间,这样就可以是线段树实现更简单的问题
阅读全文
摘要:参考:https://www.cnblogs.com/H-Vking/p/4297973.html 题意: 虽然是比较裸的线段树,但是比较麻烦,并且有很多细节需要考虑,对着别人的ac代码debug了一个晚上。纪念一下 这道题坑在有三种询问:set , add , mul。所以lazy标记要有三个,如
阅读全文
1

浙公网安备 33010602011771号