随笔分类 - 数据结构-线段树
摘要:题意给定一个长度为n(1≤n≤70000)序列,m(1≤m≤70000)次操作:1. 对一段下标是等差数列的子序列求最大值;2. 单点修改。 分析如果公差很大,那么速度是很快的。所以我们考虑阈值。 题解设阈值k表示如果询问的公差小于等于k则用线段树求...
阅读全文
摘要:题意mm的网格,有n个点。t个询问:操作一:第x个点向四个方向移动了d个单位。操作二:询问同行同列其他点到这个点的曼哈顿距离和。强制在线。(n≤105,m≤1018) 分析没啥好分析的,就是推一下能推出每行每列的一个式子来,然后套两个区间维护的结构...
阅读全文
摘要:题意n(n≤200000)张卡片,正反有两个数a[i],b[i]。m(m≤1000000)次操作,每次交换c[i]、d[i]位置上的卡片。每一次操作后输出是否存在一种方案使得正面朝上的数从左到右单调不降。 分析直接考虑线段树维护。 题解线段树每个结点记录4个信息$...
阅读全文
摘要:题意:给n个点,任选其中3个点(一个点只能取一次),求选出三个点的最大曼哈顿距离之和与最小曼哈顿距离之和(n<=10^5)。 题解:最大曼哈顿距离之和很好求,就是能包围所有点的经过三个点的矩阵周长。考虑最小曼哈顿距离之和。我们考虑一个点,那么另外两个点会有两种分布。由于对称性,我们只考虑当前枚举的...
阅读全文
摘要:题意给n(1≤n≤20000)个立方体(x,y,z),依次落下。求所有立方体落下完了以后最高的高度。 分析平面求最大值,平面更新最大值。 题解二维线段树走起,由于不好自下往上更新而且发现更新的时候值是越来越大,所以我们可以在每一次更新的时候直接在走过的路径上更新一下最大...
阅读全文
摘要:题意有1到n(1≤n≤200000)号的溜冰鞋各k(1≤k≤109)双。已知x号脚的人可以穿x到x+d的溜冰鞋。有m(1≤m≤500000)次操作,每次来了xi个ri号脚的人。xi为负,则代表走了这么多...
阅读全文
摘要:http://www.lydsy.com/JudgeOnline/problem.php?id=3065题意:带插入、修改的区间k小值在线查询。(原序列nusing namespace std;const int nTr=1000005, nSg=15000005, alphaA=4, alphaB...
阅读全文
摘要:http://www.lydsy.com/JudgeOnline/problem.php?id=1018题意:有2行,每行有c(c#include #include #include #include #include #include #include #include using namespa...
阅读全文
摘要:http://poj.org/problem?id=1151经典矩形面积并吧.....很简单我就不说了...有个很神的地方,我脑残没想到:将线段变成点啊QAQ这样方便计算了啊还有个很坑的地方,为毛每一次我精确地计算过空间可就是wa....一改大就ac...我无力了..#include #includ...
阅读全文
摘要:http://www.lydsy.com/JudgeOnline/problem.php?id=3319以为是模板题就复习了下hld。。。。。。。。。。。。。。。。。。。。。。。。。。。。。然后nlg^2n被tle成翔了。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。然后看题解QAQ,,...
阅读全文
摘要:http://www.lydsy.com/JudgeOnline/problem.php?id=1798之前写了个快速乘。。。。。。。。。。。。。。。。。。。。。。。。。。20多s。。。。。。还好1a。。那么本题就是维护两个tag即可。和上一题一样。#include #include #includ...
阅读全文
摘要:http://www.lydsy.com/JudgeOnline/problem.php?id=3585好神的题。但是!!!!!!!!!!!!!!我线段树现在要开8倍空间才能过!!!!!!!!!!这什么梗。。。。。。。。。。。。。。。。。。。。。。我思考了很久空间的问题,因为我在pushdown的时...
阅读全文
摘要:http://new.tyvj.cn/p/2065我就不说我很sb的用线段树来维护值。。。。。。本机自测的时候想了老半天没想出怎么维护点在所有区间被多少区间包含的方法。最后一小时才想出来线段树(果然太弱)。。首先想到贪心,答案一定是某个区间的右端点。。。(这个很容易想也容易证,我就不说了。。。。。)...
阅读全文
摘要:https://vijos.org/p/1750是不是我想复杂了。。。。自己yy了个二维线段树,然后愉快的敲打。但是wa了两法。。。。。。。sad原因是在处理第二维的更新出现了个小问题,sad。void pushup1(int x) { for1(i, 1, mm#include #include ...
阅读全文
摘要:https://vijos.org/p/1881这场比赛太难了sad。所以我都没做。。这题一开始我竟然不会sad(本来就不会),然后我继续yy。。yy了好久,竟然yy了个什么可拆分的并查集?(sad,后来发现我是如此sb,根本无法实现。。)然后我弃疗了,比赛干脆不交了。。sad后来看了题解和神犇们热...
阅读全文
摘要:https://vijos.org/tests/542c04dc17f3ca2064fe7718好一场 水题 比赛啊t1直接上暴力费用流10分QAQ,虽然一开始我觉得可以不用的,直接dfs可以得出最大流,但是写撮了就放弃了。t2直接上暴力又是10分QAQ,虽然本来我就不会。。t3直接上暴力还写撮了。...
阅读全文
摘要:概要:就是用来维护区间信息,然后各种秀智商游戏。技巧及注意:一定要注意标记的下放的顺序及影响!考虑是否有叠加或相互影响的可能!和平衡树相同,在操作每一个节点时,必须保证祖先的tag已经完全下放。size值的活用:主席树就是这样来的。支持区间加减,例题和模板:主席树01(就是更新和不更新等这种对立操作...
阅读全文
摘要:http://www.lydsy.com/JudgeOnline/problem.php?id=1645这题的方法很奇妙啊。。。一开始我打了一个“离散”后的线段树。。。。。。。。。。。。。果然爆了。。(因为压根没离散)这题我们可以画图知道,每2个点都有一个区间,而这个区间的高度是一样的,因此,我们只...
阅读全文
摘要:http://www.lydsy.com/JudgeOnline/problem.php?id=1664和之前的那题一样啊。。只不过权值变为了1.。同样用线段树维护区间,然后在区间范围内dp。upd:(其实权值为1的可以直接贪心。。。。右端点来就行了。。。#include #include #inc...
阅读全文
摘要:http://www.lydsy.com/JudgeOnline/problem.php?id=1672dp很好想,但是是n^2的。。但是可以水过。。(5s啊。。)按左端点排序后f[i]表示取第i个的最小费用f[i]=min(f[j])+w[i] 当j的结束时间>=i的开始时间-1答案就是所有的i满...
阅读全文