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

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