随笔分类 - 数据结构--线段树
摘要:"题目传送门" emmm..不开结构体的线段树真香! 首先我们知道“三元上升子序列”的个数就是对于序列中的每个数, 它左边比他小的数 它右边比他大的数 。但是如何快速求出这两个数? 我们用到权值线段树来维护。一般我们的线段树都是以下标延伸的,但是这里我们用的是权值,一般需要离散化,效果相当于一个桶。
阅读全文
摘要:"题目传送门" 题目大意:维护一个序列,维护区间加等差数列,单点查询的操作。 首先我们肯定是要用线段树来维护了,按照一般的思维局限,我选择了维护序列中的值,但是区间修改的时候由于公差的存在,所以区间修改有些难搞。后来又想分别维护$k$和$d$,但是最终失败了。 正解十分巧妙,维护的是一个差分序列。如
阅读全文
摘要:"题目传送门" ~~今天非常想再看一遍霸王别姬想不进去题于是开始刷数据结构~~ 注意到至多只有$30$种颜色,啊啊啊啊我一开始竟然想的不是状态压缩而是在线段树中存一个30大小的数组,这样每次更新的时候暴力循环一遍。hhhhh。 可能这样比较好想吧,但是比正解状态压缩一下不知道差到哪里去了:)。开始还
阅读全文
摘要:期望得分:70+100+60 实际得分:70+20+60 $qwq$。 T1:有一个 $n$ × $n$ 的 $01$ 方格, 图图要从中选出一个面积最大的矩形区域, 要求这个矩形区域不能有超过 $k$ 个 $1$。 开始只会$O(n^4)$算法,即枚举左上角和右下角,然后去写了T2&T3,回来想了
阅读全文
摘要:"题目传送门" 考场上感觉的确是线段树,还要维护区间最值...最值怎么维护?还要区间修改?$update$的时候加一下就好了吧...之后怎么搞啊?$qwqwq$之后好像不太会了...果断删除几乎快码完的线段树,开始写$20$分暴力...。感觉$20$直接上$O(n^3)$算法应该可以。注意到有$20
阅读全文
摘要:LuoguP3948数据结构 10-20 是比较裸的差分题目,但是要注意在线查询的时候开始傻了,每次都暴力地从1到n搞一遍,还存在数组中每次都要清空...结果T了很多点。 其实在线查询的时候直接用变量+扫到r就行了。 1 #include<cstdio> 2 #include<algorithm>
阅读全文
摘要:题目传送门 题目大意,给你一串灯,按一下开关可以将灯的状态取反(开变成关,关变成开)。维护这个序列的两种操作:询问区间内有多少灯是开着的,区间按灯。 开始想的是分别维护区间内0的数量,1的数量,两个懒标记。后来真正写到维护懒标记的时候却感觉不太可行,因为你并不精确的知道区间内哪里是开着,哪里是关着的
阅读全文
摘要:题目传送门 据说可以用贪心做?算了算了...我都不会贪...。 开始想的是用线段树,先建出一颗空树,然后输进区间操作后就维护最大值,显然开始我忽视了班车的容量以及可以有多组奶牛坐在一起的信息。 我们肯定想要有更多的区间被选中,根据线段覆盖问题的套路,我们要优先选结束位置最小的,能选就选,但是需要判断
阅读全文
摘要:今天我们说说线段树。 我个人还是非常欣赏这种数据结构的。(逃)因为它足够优美,有递归结构,有左子树和右子树,还有二分的思想。 emm这个文章打算自用,就不写那些基本的操作了... 1° 简单的懒标记(仅含加法) 当我们进行区间修改(比如同时加上一个数)时,我们现在也许暂时不用它,可以当需要用的时候再
阅读全文
摘要:果然我还是最菜的==不接受反驳 (先考了day2喵喵喵) Day2 T1:奶酪 期望得分:100分 实际得分:100分 考察:并查集 思路:这题其实之前做过了==。思路还是比较清晰的,读入时预处理出可以“通天下地”的奶酪,之后n²枚举所有的奶酪关系,可以互达的就连到一个并查集中。互达怎么判断?即使是
阅读全文
摘要:题目传送门 或者 另一个传送门 询问区间和都好说。但是开方?? 其实是这样的,一个数(1e9)以内连续开方6次就会变成1,于是我们就可在开方操作上进行暴力修改。暴力修改的意思其实也就是找到叶子节点进行修改,一步一步向上反,也就把区间操作解决了。 为了防止发生区间已经都为1了我们还傻傻开方的情况,可以
阅读全文
摘要:当线段树遇上无敌位运算! 还是老套路,线段树维护区间和,一个区间有几个"1"就是这个区间的区间和,同时支持区间修改区间查询,只不过操作从加法变成了异或。主要难点就在更新懒标记那里,详解见代码:
阅读全文
摘要:SPOJ GSS系列真是有毒啊! 立志刷完,把线段树搞完! 来自lydrainbowcat线段树上的一道例题。(所以解法参考了lyd老师) 题意翻译 n 个数, q 次操作 操作0 x y把 Ax 修改为 y 操作1 l r询问区间 [l,r] 的最大子段和 数据规模在50000,有负数。 冷静分析
阅读全文