随笔分类 -  线段树

题解 P5787 二分图 /【模板】线段树分治
摘要:分析 线段树分治呢,处理的就是这些基于时间上的物品加入删除问题,我们将所有事件离线处理,每一个询问代表一个时刻,对于每一个物品,处理它所存在的时段,概括一下就是用线段树来处理每一个物品能对哪些询问起作用。 所以线段树每一个节点就代表了一个时段,而在询问中我们通常是找某一个时间点,所以类似于标记永久化 阅读全文
posted @ 2021-12-16 15:28 漠寒· 阅读(41) 评论(0) 推荐(0)
题解 CF601E A Museum Robbery
摘要:分析 第一道线段树分治题祭。 线段树分治呢,处理的好像就是这些基于时间上的物品加入删除问题,我们将所有事件离线处理,每一个询问代表一个时刻,对于每一个物品,处理它所存在的时段,概括一下就是用线段树来处理每一个物品能对哪些询问起作用。 所以线段树每一个节点就代表了一个时段,而在询问中我们通常是找某一个 阅读全文
posted @ 2021-12-16 15:27 漠寒· 阅读(49) 评论(0) 推荐(0)
题解 P7706 「Wdsr-2.7」文文的摄影布置
摘要:分析 这道题属于考察对于合并时不同最佳状态的讨论,我们考虑最后选出来的那三张照片位置在哪里,发现有四种情况(中间隔开处为线段树区间的 \(mid\))。 1、\(ijk\)|。 2、|\(ijk\)。 3、\(ij\)|\(k\)。 4、\(i\)|\(jk\)。 显然前两种情况就是子节点的答案,而 阅读全文
posted @ 2021-12-16 15:26 漠寒· 阅读(81) 评论(0) 推荐(1)
题解 P2572序列操作
摘要:分析 对连续值和求和的询问都是比较板的,这里讲修改,赋值和翻转分别设置一个标记,思考它们的优先级,显然赋值高于翻转,所以在赋值时应清空翻转标记,在翻转时优先考虑能不能直接将赋值标记异或一,否则在改变自身即可。 Code #include<bits/stdc++.h> using namespace 阅读全文
posted @ 2021-10-31 11:29 漠寒· 阅读(78) 评论(0) 推荐(0)
题解 SP1741 TETRIS3D - Tetris 3D
摘要:分析 第一次写二维线段树,四叉树的写法。改了将近两个小时,结果最后发现把 long long 去掉时间复杂度就行了,哭掉。 这是图解。摘自一篇博客。 也就是每一个线段树的子节点,代表一个矩形,它的四个儿子,分别代表它的左上,左下,右上,右下。 其它方面就和普通的线段树无异了,唯一的变化就是你的处理由 阅读全文
posted @ 2021-09-10 07:49 漠寒· 阅读(38) 评论(0) 推荐(0)
题解 CF1401F Reverse and Swap
摘要:分析 首先,数组大小为 \(2^n\),所以可以确保2和3操作都能覆盖到整个数组,而且我们可以将整个数组分为 \(n+1\) 层。 在分层之后,我们该怎么处理2操作和3操作呢?首先理解3操作,将题面简化就是将每个大小为 \(2^{k+1}\) 里面的左右两块整体交换,在此基础上,我们就可以进一步理解 阅读全文
posted @ 2021-08-28 21:13 漠寒· 阅读(66) 评论(0) 推荐(0)