随笔分类 - 数据结构
摘要:XXXIV.[九省联考2018]IIIDX 首先,一个非常naive的想法是,建出通关的树出来,然后dfs它,在访问到一个节点时,将现有最小的值赋给它,然后从大到小遍历每个子节点。 这个算法会被 相同的情形叉掉,因为它可以构造出这样一组数据:若某个节点的子树为 ,且它的兄长(指
阅读全文
摘要:XXXIII.[APIO2019]路灯 实际上本来是在刷CDQ分治的题来着的,但是CDQ分治是众所周知地抽象,所以在碰到三维数点问题时,除非卡空间,否则一律请选择树套树…… 我们可以用 set 来维护连通性。显然,若 这一段的路灯全亮,则所有
阅读全文
摘要:XXXII.CF1491H Yuezheng Ling and Dynamic Tree 首先,相信大家都做过[HNOI2010]弹飞绵羊这道经典原题,而这题显然是那题的增强版。 众所周知,该原题有两种常见解法:LCT或分块。凭直觉发现LCT不可能处理这种区间修改问题,于是我们考虑分块。 分块的话,
阅读全文
摘要:XXX.CF505E Mr. Kitayuta vs. Bamboos “最大值最小”,条件反射套个二分上去。 于是现在问题转变成判定型问题。 正着搞不好处理 这种套了 的限制,干脆正难则反,考虑倒着处理。 于是问题转变为 第 天开头
阅读全文
摘要:XXIX.CF576E Painting Edges 首先,这个trick很常见,应该默认就能想到线段树分治的做法。但是,同样可以实现该trick的LCT维护关于删除时间的最大生成树的做法,因为我们并不知道删除时间是什么,所以不太好写(但是是能写的)。故我们只考虑线段树分治做法。 线段树分治,只需要
阅读全文
摘要:XXVIII.[UOJ#576][ULR#1]服务器调度 非常可怕的大数据结构题,原版代码整整码了9K,就算稍微合并合并也剩下7K…… 首先,我们考虑对每种颜色,建出一棵虚树。考虑求出虚树的一条直径。则有个结论是原树上到任意一点最远的点肯定是此直径的端点之一。 例如,我们考虑下方的这棵树: O /
阅读全文
摘要:XXVII.CF573E Bear and Bowling 考虑暴力的DP。设 表示前 个元素中选择长度为 的子序列所能得到的最大收益。 考虑由 转移到 。明显,一共有两种转移方式:\(f_{i,j}\righta
阅读全文
摘要:XXVI.CF1458C Latin Square 实际上此题使用的数据结构不很高级,甚至可以说很不高级——因为全程只用了数组。但是本题的思想绝对是非常高级的。 我们考虑上数据结构维护该操作。上下左右移动显然是没问题的;但是行中列中轮换应该咋办呢? 我们先考虑如果只有行上轮换应该怎么办。这玩意没什么
阅读全文
摘要:XXV.CF702F T-Shirts 一句没有输出的调试语句忘删了,然后浪费了半小时debug\kk…… 首先观察到我们可以将所有物品按照quality为第一关键字递减排序,然后再关于price为第二关键字排序,这样所有人购买的东西就都必定是按照其一个子序列的顺序购买的。 于是把询问离线下来,然后
阅读全文
摘要:XXIV.[Code+#1]Yazid 的新生舞会 关于众数,我们通常是对于每个数求出它作为众数的区间数。 考虑某个数 。我们可以发现,如果令 的所有位置有 ,其余位置有 ,则如果某个区间 关于 的区
阅读全文
摘要:XXIII.[JOI 2020 Final] 火事 题解
阅读全文
摘要:XXII.CF477E Dreamoon and Notepad 题解
阅读全文
摘要:XXI.[APIO2015]八邻旁之桥 首先先忽略所有在同侧的人,考虑异侧的人。 则明显,如果我们只在位置修一座桥,则一个从某侧的到另一侧的的人,其一共要走的距离就是 (忽略了桥长,因为桥长可以被统一计算) 于是我们发现,此时和是独立的。
阅读全文
摘要:XX.[APIO2018] New Home 新家 题解
阅读全文
摘要:XIX.「JOI 2013 Final」バブルソート 冒泡排序 首先,有一个常识性结论,就是冒泡排序的次数等于逆序对数。所以本题等价于交换两个数使得减少的逆序对数最多。 于是我们翻出VIII.CF785E Anton and Permutation中给出的结论——当且时,
阅读全文
摘要:XVIII.CF679E Bear and Bad Powers of 42 一个显然的想法是,观察到可能的值域()内不会有很多(准确地说,一共个)的整数次幂。于是我们考虑每次暴力修改,则每个数最多被处理次,复杂度显然是可以承受的。 于是我们现在问题就转
阅读全文
摘要:XVII.CF1413F Roads and Ramen 首先,注意到本题等价于求路径上所有边权的异或和为的路径长度的最大值。 然后,我们要猜/证明出一个结论,即任意一条极长合法路径,其必有一个端点是直径端点。 证明: 我们设有一条直径。我们再设表示从节点到根
阅读全文
摘要:XVI.CF360B Levko and Array 明显可以二分答案为。二分之后,我们考虑DP验证。 我们设表示强制保留时,最多可以保留多少个数。则我们显然有转移方程 \(\Large f_i=\max\limits_{j\in[1,i),|a_i-a_j|\leq(i-
阅读全文
摘要:XV.CF319E Ping-Pong 好题。 首先,离线下来离散化显然是不用说的。 然后观察这里“可以移动”的定义,发现明显可以类比图论中的连边。发现边只有有向边(两区间包含)和无向边(两区间相交)两种,又因为我们只管连通性,所以无向边可以直接使用并查集维护。而包含关系又具有可传递性,故我们最终会
阅读全文