随笔分类 - 题解
题解
摘要:第一次 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 操作在这个线段上的影响)肯定是不切实际的,因为知道了这个线
阅读全文
摘要:你谷传送门 原题传送门 分析 一眼可以看出,这题实际上是让你维护区间覆盖、单点查询操作。于是考虑线段树。 进一步观察可以发现,一次覆盖操作实际上是把 \(a_x\) 及其后的 \(k-1\) 个元素赋给 \(b_y\) 及其后的 \(k-1\) 个元素。我们画个图来理解一下: 也就是 \(b\) 数
阅读全文