线段树
lajiyuan_
已经退役啦,会不定期更新cf博客 or 其他计算机知识相关的博客.
展开
-
【51NOD 1107 斜率小于0的连线数量】 离散化+权值线段树
51NOD1107斜率小于0的连线数量 题意就是二维平面上N个点之间共有C(n,2)条连线。求这C(n,2)条线中斜率小于0的线的数量 我们将两个点的坐标描述一下就是.A点为(ax,ay),B点为(bx,by)斜率小于0也就是bx>ax且by<ayA点为(ax,ay),B点为(bx,by)斜率小于0也就是bx>ax且by<ayA点为(ax,ay),B点为(bx,by)斜...原创 2018-09-13 08:30:13 · 108 阅读 · 0 评论 -
【 Educational Codeforces Round 72 - E. Sum Queries? 】 拆位+线段树
题目链接http://codeforces.com/contest/1217/problem/E题意定义一个不平衡的multiset为集合中有某两个元素的十进制表示在某一位均有不为0。现在给出一个数组,每次单点修改一个值,区间查询这个区间所有的数能组成的元素和最小的不平衡的multiset。1≤n≤2∗1051 \leq n \leq 2*10^51≤n≤2∗1051≤m≤2∗1051...原创 2019-09-06 10:09:49 · 410 阅读 · 1 评论 -
【Codeforces Round #368 (Div. 2) D. Persistent Bookcase】线段树
链接:https://codeforces.com/contest/707/problem/D题意有n个书架,每个书架上有m个位置可以放书,现在要维护4种操作。1,x,y:如果第x个书架的第y个位置没有书,在第x个书架的第y个位置放置一本书2,x,y:如果第x个书架的第y个位置有书,把第x个书架的第y个位置的书拿走3,x: 将第x书架所有有书的位置的书拿走,将x书架所有没有书的位置放上...原创 2019-04-18 22:38:21 · 110 阅读 · 0 评论 -
【Codeforces Round #179 (Div. 2) C. Greg and Array】差分/线段树
链接:http://codeforces.com/problemset/problem/296/C题意:给你n个数,有m次操作,每次操作为区间加,现在有k次大操作,每次大操作执行m个操作的[l,r]区间,问k次大操作之后这n个数变成什么样?做法:第一种做法就是先对k次大操作进行差分,就知道每个小操作执行次数,之后线段树维护区间加即可。第二种做法就是知道每个小操作执行次数之后,在原数组上...原创 2019-04-18 18:33:05 · 185 阅读 · 0 评论 -
【Codeforces Round #254 (Div. 1) C. DZY Loves Colors】线段树
链接:http://codeforces.com/contest/444/problem/C题意:给你n个元素,第i个元素最初的颜色是i,最初每个元素的权值为0,有两种操作,第一种操作是区间赋值x,如果之前元素的颜色为y,那么赋值之后他的权值增加abs(x-y),第二种操作是查询所有元素的权值和。做法:首先可以想象如果每次操作区间很大,那么所有元素趋向颜色相同,如果操作区间很小,则可以暴...原创 2019-04-18 18:28:03 · 128 阅读 · 0 评论 -
【Codeforces Beta Round #19 D. Points】离散化+线段树
链接:Codeforces Beta Round #19 D. Points题意给你一个笛卡尔坐标系,现在要支持三种操作,第一种操作是添加一个点(x,y),第二种操作是删除一个点(x,y), 第三种操作是查询严格在点(x,y)右上角的点中,横坐标最小的点,如果有多个点,选择纵坐标最小的那个。做法首先题中给出的坐标范围都是1e9,所以需要对x轴进行离散化,建立线段树,每个节点存储区间内所有...原创 2019-04-09 21:06:55 · 186 阅读 · 0 评论 -
【Codeforces Round #111 (Div. 2) E. Buses and People】离散化+线段树
链接:Codeforces Round #111 (Div. 2) E. Buses and People题意有n个公交车,每个公交车的信息有sis_isi(公交车起始下标),fif_ifi(公交车终点下标),tit_iti(公交车发车时间)。有m个乘客,每个乘客的信息有lil_ili(乘客起始下标),rir_iri(乘客下车的下标),bib_ibi(乘客上车时间)。乘客ii...原创 2019-04-09 20:07:14 · 249 阅读 · 0 评论 -
【Codeforces Round #458 D.Bash and a Tough Math Puzzl】线段树
链接Codecraft-18 and Codeforces Round #458 (Div. 1 + Div. 2, combined)题意给你一个区间,要支持两种区间操作。第一种操作是单点更新,第二种操作是询问某个区间是否可以去掉一个元素使这段区间的gcdgcdgcd为xxx的倍数。做法首先先要支持区间gcdgcdgcd和单点更新,这个用普通的线段树就可以维护。之后对于每个操作22...原创 2019-04-09 11:49:00 · 102 阅读 · 0 评论 -
【Codeforces Round #442 (Div. 2)E. Danil and a Part-time Job】 dfs序+线段树
链接:Codeforces Round #442 (Div. 2)E. Danil and a Part-time Job题意:给你一颗有根树,树上每一个节点有一个灯,现在要支持两种操作,第一种操作是统计一颗子树内开着的灯个数。第二种操作是将一个子树内的所有灯状态改变(开灯->关灯,关灯->开灯)。做法:首先对于树的dfs序建立线段树,这样每一棵子树都能表示成一段区间,之后问...原创 2019-04-09 11:28:39 · 125 阅读 · 0 评论 -
【线段树模板以及Codeforces线段树专题总结】
线段树模板//线段树一般用来解决可合并的区间问题//树上维护子树区间的问题也可以通过dfs序+线段树去维护//不要忘记build,dfs序问题build时注意下标//数组记得开4倍,push_down一定要想好顺序//对于每个问题,我们只要考虑清楚push_down和push_up的写法即可//当问题不好处理的时候,想象一下对于单次询问暴力的做法,再进行区间操作struct T{...原创 2019-04-09 11:27:42 · 3465 阅读 · 3 评论 -
【Codeforces Round #275 (Div. 2) D.Interesting Array】线段树
链接:CodeForces-483D Interesting Array题意让你构造一个数列,满足m种限制条件,每种限制条件是l,r,x,要求构造的序列区间[l,r] 与运算的值结果为x。做法首先由一个拆位的做法,对于每次询问,拆成30位分别进行构造,对于每个为0的位,区间查询这一位下[l,r]的和是不是等于区间长度,也就是看区间[l,r]与的结果是否为0。对于每个为1的位,区间更新。但...原创 2019-04-11 15:54:37 · 134 阅读 · 0 评论 -
【Educational Codeforces Round 52 C. Make It Equal】差分前缀和/线段树
Educational Codeforces Round 52 C. Make It Equal题意:给你一些从左到右摆放的n堆正方体,每堆正方体由一些正方体堆叠而成,现在每次可以沿着某个高度砍一刀,这个高度之上的正方体都会被砍掉,要求是掉落的正方体个数不超过k,问最少砍多少刀能让所有正方体高度相同。做法:首先可以桶排序,高度从高到低统计出每种高度正方体高度的个数,之后从高到低贪心的看是...原创 2019-04-11 15:53:43 · 125 阅读 · 0 评论 -
【 Educational Codeforces Round 61 (Rated for Div. 2) G. Greedy Subsequences】单调栈+dfs序+线段树
G. Greedy Subsequences题意给你一个长度为n的数组,对其中每个长度为k的连续子序列求这个子序列的最长贪心子序列最长子序列的定义为选定一个数作为第一个数,那么他右面离他最近而且比他大的数作为第二个数,以此类推直到不能再加数这样产生的序列被称为贪心子序列,选定每一个数作为起点,得到的最长的贪心子序列就是一个序列的最长贪心子序列。做法首先这道题一定是滑动窗口来做的。也就是...原创 2019-03-07 14:58:49 · 140 阅读 · 0 评论 -
【Codeforces Round #538 (Div. 2) F. Please, another Queries on Array?】欧拉函数+线段树+状压
F. Please, another Queries on Array?题意给你一个长度为n的序列,序列中第i个数为aia_iai,1≤ai≤3001 \leq a_i \leq 3001≤ai≤300之后有q次操作,每次操作有两种形式1:区间乘x,1≤x≤3001 \leq x \leq 3001≤x≤3002: 询问区间乘积的欧拉函数。1≤n≤4∗1051 \leq n \...原创 2019-03-02 09:54:54 · 208 阅读 · 0 评论 -
【 Codeforces Round #520 (Div. 2) E. Company】dfs序+线段树+lca
E. Company题意给你一颗具有n个节点的树,有q次查询,每次查询给出l,r求(l,l+1,l+2…r-1,r)这段区间不考虑哪个节点之后能让剩余节点的lca深度尽量大做法这道题有好多种做法,我在做的过程中用了三种做法首先我们要知道,不考虑一个节点能让一些点的lca发生变化的话,这个点一定是dfs序最小的点或者dfs序最大的点。如果能想到这个结论第一种做法就很好想第一种做...原创 2018-11-19 23:34:46 · 535 阅读 · 0 评论 -
【HDU-6183-Color it】 动态开点的线段树
题目链接http://acm.hdu.edu.cn/showproblem.php?pid=6183题意给你一个二维平面,最开始平面上没有任何点,有4种操作,给你一个二维平面,最开始平面上没有任何点,有4种操作,给你一个二维平面,最开始平面上没有任何点,有4种操作,第一种操作是 0 表示清除这个平面上所有的点第一种操作是 \ 0 \ 表示清除这个平面上所有的点第一种操...原创 2018-09-25 11:00:00 · 157 阅读 · 1 评论 -
【ACM-ICPC 2018 徐州赛区网络预赛 G. Trace】 离散化+权值线段树
题目链接https://nanti.jisuanke.com/t/31459题意题意就是按顺序给出一些左下角在原点的与坐标轴平行的矩形,题意就是按顺序给出一些左下角在原点的与坐标轴平行的矩形,题意就是按顺序给出一些左下角在原点的与坐标轴平行的矩形,后来的矩形会覆盖掉原来矩形的边,求最后所有能看见的边的总长度。后来的矩形会覆盖掉原来矩形的边,求最后所有能看见的边的总长度。后来的矩形会覆盖掉原...原创 2018-09-18 12:31:01 · 211 阅读 · 0 评论 -
【NCPC2017-2018-gym101572-A.Airport Coffee 】 线段树+分类讨论DP
Airport Coffee题目链接:https://codeforces.com/gym/101572/problem/ADescriptionInputOutputSample Input100000 100 138 60 30055000 20000 50000 55000 75000Sample Output20 3题意从000这个位置出发走到$ l这个位...原创 2019-09-27 22:14:12 · 322 阅读 · 0 评论