随笔分类 -  数据结构——树状数组/线段树/ST表

摘要:I.[HNOI2012]三角形覆盖问题 扫描线问题是计算几何里面的一大重点……吗? 不管怎么说,这道题的确要使用扫描线解决。 具体来说,因为n只有10000,考虑使用O(n2)的做法并加以剪枝。 我们首先将所有三角形按照顶点的x坐标递增顺序。接着,考虑用扫描线维护每一时刻与扫描线相 阅读全文
posted @ 2021-04-03 13:22 Troverld 阅读(164) 评论(0) 推荐(0) 编辑
摘要:XLVII.CF1500E Subset Trick 考虑对于每个集合大小 i,找到所有大小为 i 的集合中元素和最小的一个 li 与最大的一个 ri。则,所有 x[li,ri) 均不合法。 于是我们就要求 \(\Big|\bigcup\limi 阅读全文
posted @ 2021-04-03 13:19 Troverld 阅读(75) 评论(0) 推荐(0) 编辑
摘要:XLIV.CF607D Power Tree 考虑计算 x 子树中某个节点 y 对于 f(x) 的贡献,发现是 wy×zpath(y,x)degz,其中 degzz 节点的儿子数。 阅读全文
posted @ 2021-04-02 23:15 Troverld 阅读(62) 评论(0) 推荐(0) 编辑
摘要:XLIII.URAL1097. Square Country 2 考虑二分,二分后转成判定性问题,然后用扫描线+线段树处理即可。时间复杂度 O(nlog2n)。 代码: #include<bits/stdc++.h> using namespace std; int n,m,q; str 阅读全文
posted @ 2021-04-02 23:13 Troverld 阅读(33) 评论(0) 推荐(0) 编辑
摘要:XLII.[NOI2019] 弹跳 一眼看上去,单点向矩阵连边、最短路,这不是数据结构优化建图是什么? 想了想二维线段树优化建图,发现可以。 于是就写了,内层线段树写的还是可以压缩空间的线段树合并。 然后MLE了。 88 分代码: #include<bits/stdc++.h> using 阅读全文
posted @ 2021-04-02 23:11 Troverld 阅读(56) 评论(0) 推荐(0) 编辑
摘要:XL.[NOI2017] 整数 首先可以想到一种用线段树维护每一位的方法:一个数 a×2b 拆成 loga 个位置上 +1,执行单点 +1 的时候如果出现进位就找到右方第一个非 1 的位置,然后单点加,区间赋 0;执行减法的时候,就是找 阅读全文
posted @ 2021-04-02 23:07 Troverld 阅读(99) 评论(0) 推荐(0) 编辑
摘要:XXXIV.[九省联考2018]IIIDX 首先,一个非常naive的想法是,建出通关的树出来,然后dfs它,在访问到一个节点时,将现有最小的值赋给它,然后从大到小遍历每个子节点。 这个算法会被 d 相同的情形叉掉,因为它可以构造出这样一组数据:若某个节点的子树为 1,且它的兄长(指 阅读全文
posted @ 2021-04-02 17:11 Troverld 阅读(166) 评论(0) 推荐(0) 编辑
摘要:XXXIII.[APIO2019]路灯 实际上本来是在刷CDQ分治的题来着的,但是CDQ分治是众所周知地抽象,所以在碰到三维数点问题时,除非卡空间,否则一律请选择树套树…… 我们可以用 set 来维护连通性。显然,若 [l,r] 这一段的路灯全亮,则所有 a,b[l,r+1] 阅读全文
posted @ 2021-04-02 17:09 Troverld 阅读(101) 评论(0) 推荐(0) 编辑
摘要:XXVIII.[UOJ#576][ULR#1]服务器调度 非常可怕的大数据结构题,原版代码整整码了9K,就算稍微合并合并也剩下7K…… 首先,我们考虑对每种颜色,建出一棵虚树。考虑求出虚树的一条直径。则有个结论是原树上到任意一点最远的点肯定是此直径的端点之一。 例如,我们考虑下方的这棵树: O / 阅读全文
posted @ 2021-04-02 16:59 Troverld 阅读(142) 评论(0) 推荐(0) 编辑
摘要:XXIV.[Code+#1]Yazid 的新生舞会 关于众数,我们通常是对于每个数求出它作为众数的区间数。 考虑某个数 x。我们可以发现,如果令 ai=x 的所有位置有 bi=1,其余位置有 bi=1,则如果某个区间 [l,r] 关于 b 的区 阅读全文
posted @ 2021-04-02 16:49 Troverld 阅读(60) 评论(0) 推荐(0) 编辑
摘要:XXIII.[JOI 2020 Final] 火事 题解 阅读全文
posted @ 2021-04-02 16:48 Troverld 阅读(83) 评论(0) 推荐(0) 编辑
摘要:XIX.「JOI 2013 Final」バブルソート 冒泡排序 首先,有一个常识性结论,就是冒泡排序的次数等于逆序对数。所以本题等价于交换两个数使得减少的逆序对数最多。 于是我们翻出VIII.CF785E Anton and Permutation中给出的结论——当i<jai>aj时, 阅读全文
posted @ 2021-04-02 16:39 Troverld 阅读(123) 评论(0) 推荐(1) 编辑
摘要:XVIII.CF679E Bear and Bad Powers of 42 一个显然的想法是,观察到可能的值域(1014)内不会有很多(准确地说,一共11个)42的整数次幂。于是我们考虑每次暴力修改,则每个数最多被处理11次,复杂度显然是可以承受的。 于是我们现在问题就转 阅读全文
posted @ 2021-04-02 16:38 Troverld 阅读(87) 评论(0) 推荐(0) 编辑
摘要:XVII.CF1413F Roads and Ramen 首先,注意到本题等价于求路径上所有边权的异或和为0的路径长度的最大值。 然后,我们要猜/证明出一个结论,即任意一条极长合法路径,其必有一个端点是直径端点。 证明: 我们设有一条直径(S,T)。我们再设coli表示从i节点到根 阅读全文
posted @ 2021-04-02 16:36 Troverld 阅读(52) 评论(0) 推荐(0) 编辑
摘要:XVI.CF360B Levko and Array 明显可以二分答案为x。二分之后,我们考虑DP验证。 我们设fi表示ai强制保留时,最多可以保留多少个数。则我们显然有转移方程 \(\Large f_i=\max\limits_{j\in[1,i),|a_i-a_j|\leq(i- 阅读全文
posted @ 2021-04-02 16:24 Troverld 阅读(60) 评论(0) 推荐(0) 编辑
摘要:XV.CF319E Ping-Pong 好题。 首先,离线下来离散化显然是不用说的。 然后观察这里“可以移动”的定义,发现明显可以类比图论中的连边。发现边只有有向边(两区间包含)和无向边(两区间相交)两种,又因为我们只管连通性,所以无向边可以直接使用并查集维护。而包含关系又具有可传递性,故我们最终会 阅读全文
posted @ 2021-04-02 16:22 Troverld 阅读(66) 评论(0) 推荐(0) 编辑
摘要:XIV.SP1557 GSS2 - Can you answer these queries II 我认为这是GSS题目中难度最大的一道,不接受反驳。 这题中出现多次的只给算一次,应该咋办呢? 我们回忆起这种情况的经典老题:[SDOI2009]HH的项链。正解是将询问离线后按照右端点递增排序,然后出 阅读全文
posted @ 2021-04-02 16:20 Troverld 阅读(61) 评论(0) 推荐(0) 编辑
摘要:XIII.CF226E Noble Knight's Path 这题分为在线和离线两种做法然而我只会在线 在线的思路很简单,即先树剖,然后建出主席树。主席树一维维护的是时间,每一棵主席树内部维护的是树剖剖出来的结果。 然后对于每一次询问: 首先先从两边跳链,找到LCA,并找出两点路径间没有被“亵渎” 阅读全文
posted @ 2021-04-02 16:18 Troverld 阅读(115) 评论(0) 推荐(0) 编辑
摘要:X.CF650D Zip-line 我们考虑在修改一个位置后,新的LIS可能有哪些。 就是原序列中的LIS。 设原序列LIS长度为len。 此时有两种可能: A.被修改的位置在LIS中不是不可替代的(换句话说,有至少一条LIS不经过此位置)。此时,长度就是len。 B.被修改的位置在LIS中 阅读全文
posted @ 2021-04-02 16:11 Troverld 阅读(113) 评论(0) 推荐(0) 编辑
摘要:IX.[TJOI2017]不勤劳的图书管理员 我要举报……出题人语文明显不太好…… 首先,这题就是上一题的带权版。 然后,这题带了权后和上一题就不太一样了。 当你交换位置x,y的书后,(默认x<y) 位置在x前或在y后的书不受影响; 位置在x,y之间,且$val_z\in(val 阅读全文
posted @ 2021-04-02 16:08 Troverld 阅读(53) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示