摘要: 只有询问,允许离线,我们可以考虑使用莫队。 那么问题在于我们怎么计算右端点 \(+1\) 带来的增量,可以发现这些新增加的子区间都是以 \(r\) 为右端点的,那么我们只需要考虑以 \(r\) 为右端点,左端点在 \([l, r]\) 的区间最小值之和,可以发现这个的答案是可以转移的,于是我们令 \ 阅读全文
posted @ 2020-08-11 21:34 Achtoria 阅读(108) 评论(0) 推荐(0) 编辑
摘要: 这是一个二维区域修改区域查询问题,可以考虑使用二维树状数组解决。 我们先回忆一下一维区间修改区间查询树状数组是怎么做的,因为树状数组本身只支持求前缀和的形式,每次修改也只能单点修改,因此结合前缀和和单点修改的性质,我们想到可以用树状数组来维护差分数组,这样就能做到区间修改单点查询,但这还是不是我们需 阅读全文
posted @ 2020-08-10 20:00 Achtoria 阅读(88) 评论(0) 推荐(0) 编辑
摘要: 这种排列生成排列的题目我们一般可以考虑生成排列合法的充要条件。 首先可以发现的一点就是该生成排列的任意一个数 \(p_i\) 一定不存在连续的三个数 \(p_{i + 1}, p_{i + 2}, p_{i + 3}\) 比其小。考虑原排列的生成方式,如果存在生成的排列中 \(p_{i + 1} < 阅读全文
posted @ 2020-08-10 08:14 Achtoria 阅读(105) 评论(0) 推荐(0) 编辑
摘要: 无解的情况一定是 \(|a_1 - a_n| > (n - 1) \times d\),下面考虑优解的情况。 首先这题我们能想出一个简单的费用流模型,但边数和点数都和值域有关,因此这样是过不掉的,可以发现无论怎样 \(dp\) 状态都要和值域有关,因此这题应该需要考虑贪心。 简单的贪心显然是不正确的 阅读全文
posted @ 2020-08-08 12:33 Achtoria 阅读(113) 评论(0) 推荐(0) 编辑
摘要: 先考虑不修改怎么做,可以令 \(dp_i\) 表示前 \(i\) 个题能获得的最大得分。那么我们有转移: \(dp_i = \min\{dp_{i - 1}, dp_{j} + \frac{(i - j + 1)(i - j)}{2} - (S_i - S_j)\}(0 \le j < i)\) 很 阅读全文
posted @ 2020-08-08 11:41 Achtoria 阅读(98) 评论(0) 推荐(0) 编辑
摘要: 排列计数的一个经典做法就是按照某种顺序将元素不断往序列中插入,不难发现本题的第一问为了方便知道每个位置前面有多少个大于当前位置,我们可以考虑按高度从大到小地将一座座山不断插入序列。假设当前没有高度相同的山,当前考虑插入第 \(i\) 座山,\({a_i}_{val}\) 是当前山的关键字,那么我们能 阅读全文
posted @ 2020-08-08 11:04 Achtoria 阅读(112) 评论(0) 推荐(0) 编辑
摘要: 我们可以知道异或可以看成不进位的加法,那么我们就可以得到 \(a + b = a\) ^ \(b + ((a \& b) << 1)\),不难发现 \(\frac{v - u}{2}\) 就是 \(a \& b\) 也就是 \(a, b\) 中同时为 $1$ 的位置,那么只需要满足 \(\frac{ 阅读全文
posted @ 2020-08-07 08:52 Achtoria 阅读(103) 评论(0) 推荐(0) 编辑
摘要: 很显然有一个暴力 \(dp\),令 \(dp_{i, j}\) 表示最后一次划分在 \(i\) 上次划分在 \(j\) 的最小花费,令 \(S_i = \sum\limits_{j = 1} ^ i a_j\)。那么有转移: \(dp_{i, j} = \min\{dp_{j, k} + (S_i 阅读全文
posted @ 2020-08-07 07:56 Achtoria 阅读(112) 评论(0) 推荐(0) 编辑
摘要: 显然如果我们直接枚举断哪条边,剩下的两颗树的重心编号非常不好求,一个常见的想法是我们反过来,考虑每个节点有多少种情况作为树的重心,计算每个点对答案的贡献。 下面我们就需要大力分类讨论了。假设我们现在考虑计算贡献的节点为 \(x\),令以其儿子为根的子树树的最大的子树大小为 \(mx_x\),次大值为 阅读全文
posted @ 2020-08-06 22:35 Achtoria 阅读(173) 评论(0) 推荐(0) 编辑
摘要: 不难想到一个状态,令 \(dp_{i, j}\) 为大小为 \(i\) 的完全图划分成 \(j\) 个联通块的方案,下面考虑怎么转移。 不难发现我们可以枚举任意一个点再枚举他所在联通块的大小,这样就能转移了,但这样会记重,因为同一种方案我们会在枚举不同的点时都计算一遍,一个经典的想法就是我们枚举 $ 阅读全文
posted @ 2020-08-06 22:01 Achtoria 阅读(91) 评论(0) 推荐(0) 编辑