01 2024 档案
摘要:关于我赛时线段树忘了开四倍空间导致白吃了一发罚时这档逝 原题传送门 约定 \(x\) 子树内的叶子称为 \(x\) 的叶子。 与 \(x\) 颜色相同的点称为 \(x\) 的同色点或 \(x\) 色点。 所有在 \(x\) 子树内的、到 \(x\) 的路径上(两端不含)没有 \(x\) 的同色点的
阅读全文
摘要:非常好 dp,使我线段树旋转。 原题传送门 分析 首先由于两点之间直线线段最短,我们肯定是希望从头一直送到尾,最后回家。但是有了 \(k\) 的限制,就麻烦了。 考虑一个 dp。我们设 \(dp[i]\) 表示刚送完第 \(i\) 个孩子时所要跑的最短距离。转移的时候我们枚举上一次回家是在送完哪一个
阅读全文
摘要:第一次 AK abc,写篇题解记录一下。 原题传送门 分析 发现实际上是要求删去每个绿点之后会多出几个连通块。发现这跟割点的定义很像,于是考虑建图,在相邻的绿点之间连边。然后就只要知道每个点到底被包含在几个点双里。我们使用圆方树,此时就只需要统计每个点的度数就可以了。 代码 #include <io
阅读全文
摘要:原题传送门 分析 约定:钦定 \(1\) 为根。下称修道院所在点为黑点,城镇所在点为白点。记 \(F(x)\) 为 \(x\) 的父亲。 对于每个黑点 \(x\),我们可以求出将哪些白点删去会使得其要求无法达成。显然,删去以 \(x\) 为根时 到 \(x\) 所有距离最远的点的 LCA 与 \(x
阅读全文
摘要:传送门 分析 可以考虑 dp。先朴素地定义 \(dp[i][j]\) 表示当前在结点 \(i\),已经走过了 \(j\) 个结点(含当前)的方案数。发现没法处理括号匹配,于是加一维 \(k\) 表示当前还剩 \(k\) 个前括号没有匹配。又发现没法处理前导 \(0\)。于是考虑再加一维表示当前的最后
阅读全文
摘要:原题传送门 分析 考虑 dp。设 \(w[0/1][l][r]\) 为区间 \([l, r]\) 内的设备不与上 / 下树连通且不影响其他设备与上 / 下树连通性时可以删除的最多边数。可以枚举 \(l\),递推 \(r\)。假设我们现在要从区间 \([l, r)\) 得到区间 \([l, r]\)
阅读全文
摘要:原题传送门 分析 考虑将竖直线从左往右扫,发现左半部分的颜色种类数不减,而右半部分颜色种类数不增。于是如果要保证任意时刻两半颜色数量一样,则这个相等的颜色数量一定不变。考虑竖直线在 \(1\)、\(2\) 列之间和在 \(m - 1\)、\(m\) 列之间时,发现这两个时刻左半部分颜色数量相等,也就
阅读全文
摘要:原题传送门 提供一个常数巨大的暴力数据结构做法。 分析 看到这种极值类问题,可以先想一想二分。由于这题中可以击败的怪物一定是一段连续的前缀,所以考虑二分这段前缀的长度。 由于本题中一道护身符免掉的是一种类型的怪物所造成的总伤害,所以考虑单个怪物的伤害是没有意义的。接下来我们只考虑某一区间中同一类型的
阅读全文
摘要:原题链接 分析 观察要求的式子:\(\sum_{1 \leq i \lt j \leq N}f(S_i, S_j)\),发现可以拆成每一个集合 \(S_i\) 的贡献的和。那么我们考虑每一个集合 \(S_i\) 的贡献。 显然,对于每一个 \(S_i\) ,其贡献就是 \(\sum_{i \lt j
阅读全文
摘要:这题题解的做法千奇百怪,有写了两棵线段树的,有线段树套差分的,还有线段树套二阶差分的。我承认是我看不懂所以我决定写一篇只用一棵线段树的题解。 分析 众所周知,普通线段树的懒标记存的是一个待更新的量。那对于这个题来说,直接存和(也就是 add 操作在这个线段上的影响)肯定是不切实际的,因为知道了这个线
阅读全文
摘要:原题传送门 分析 首先一眼看到这个题,第一个想到的肯定是 dfs 暴力每次询问时从左往右把边一条一条加进来,再从右往左加一遍,然后维护连通块个数。但是这样的复杂度显然是 \(O(mk)\) 的。所以我们需要一些优化。 注意到在加边的时候有些边并不会改变连通块的个数。这些边我先称之为无用边。于是我们可
阅读全文
摘要:这出题人语言表达能力真的感人…… 希望你们看完这篇题解后不要觉得我的语言表达能力和出题人不相上下。 题目大意 给定一棵有点权的树,每次询问从 \(u\) 到 \(v\) 的路径上后经过的点权减去先经过的点权的最大值,再把这条路径上所有点的点权加上一个给定的数。 分析 俗话说得好:如果你觉得一个树上的
阅读全文
摘要:原题传送门 当天比赛打完之后看了看跟我排名差不多的人的这题代码,感觉莫名其妙,写了几十行。我看了看我只有十几行的 AC 代码,陷入了沉思。 分析 题目的要求其实可以转换为:在区间 \([l_0, r]\) 中选择一些数,使得这些数排序后每个数都是前一个数的倍数,要求选的尽可能多。那既然要选的尽可能多
阅读全文
摘要:分析 首先发现此题的式子一看就不是很友好。所以尝试化简。 原式:\(max(|a_u + a_v|, |a_u - a_v|)\)。 分类讨论: 当 \(a_u > 0, a_v > 0\) 时,显然有 原式 \(= a_u + a_v\); 当 \(a_u > 0, a_v < 0\) 时, \(
阅读全文
摘要:原题传送门 分析 既然题目要求求出所有四行诗共同的形态,那我们就想到可以用位运算。 我们用二的次方来表示每一种形态,然后把每一篇诗的形态或起来,就可以得到最终的形态。输出的时候再拿个函数转一下就行了。 有了基本框架,我们就可以开始构造特殊情况。题目中说到如果有 aaaa 这种类型,那么它可以等同于任
阅读全文
摘要:题目 CF1779D 题目传送门 分析 应该让每一个 \(x\) 覆盖尽量大的区间。 分析题目,可以知道对于每一个位置 \(i\),有多少 \(x > b[i]\) 覆盖了 \(i\) 是不关键的,关键是是否有一个 \(x \leq b[i]\) 是否覆盖了它。 当位置 \(i\) 被 \(x <
阅读全文