随笔分类 - 题解
摘要:分析 乱搞题。 右移若干次很显然可以破环成链,然后 \(l,r\) 指针在这个长度为 \(2n\) 的序列上右移。每种状态的答案就是 \([l,r]\) 的答案。 考虑相邻两种状态的变化量。设上一次 \(l'\) 指向的值为 \(p_{l'}\),则到当前状态的变化量就是:\(-\operatorn
阅读全文
摘要:分析 一道差分约束题。 我们令 \(\mathit{sum}_{i}\) 表示 \(1\) 到 \(i\) 中,\(1\) 的数量,根据题意可得: \(\mathit{sum}_{l_i-1}+x_i \le \mathit{sum}_{r_i}\) \(\mathit{sum}_{l+1} +(-
阅读全文
摘要:分析 数位 DP 一眼题。 对于一个 \(k\) 位的数 \(s\),我们不妨将其看做由数字 \(s_1,s_2,s_3,\dots,s_k\) 这 \(k\) 个数字拼接起来的。而题意是每个人可以将 \(s_1,s_2,s_3,\dots,s_k\) 中的任意一个减去任意数字,保证不减去 \(0\
阅读全文
摘要:分析 通过题目我们可以发现,题目里唯一难受的限制就是最长增长部分的长度。我们不妨试试将其放进状态函数里。根据 LIS 的性质,若一个长度为 \(3\) 的子序列 \(a_1,a_2,a_3\) 满足 LIS,则必有 \(a_1 <a_2<a_3\)。我们定义 \(\mathit{f}_{i,x,y,
阅读全文
摘要:分析 一眼莫队(虽然通过这题的范围显然看出出题人用的不是莫队)。 我们定义 \(\mathit{cnt}_{i}\) 表示数字 \(i\) 出现的次数。在指针的拓展增加 \(x\) 时,若有 \(\mathit{cnt}_{x}+1=1\),则表示在在这个区间里,\(x\) 是第一次出现的,我们可以
阅读全文
摘要:感谢 @\(\color{#AEF}{\texttt{Celestial Cyan}}\) 大神对我的骚扰帮助。 分析 一眼 DP。 对于求最大满足条件区间数,我们定义状态函数 \(\mathit{f}_{i}\) 表示在第 \(1\) 到 \(i\) 个区间中选择,且必选第 \(i\) 个区间能够
阅读全文
摘要:分析 用势能线段树。 对于一段数字 \(a_l\) 到 \(a_r\),每次全部除以一个大于 \(1\) 的数,不难发现最多除以 \(\log x\) 次就会使 \(a_l\) 到 \(a_r\) 全部变成 \(0\),其中 \(x\) 是区间最大值。 所以,在没有操作 \(2\) 的情况下,我们可
阅读全文
摘要:分析 思路不难想,我们对于第 \(i\) 个计划的时间,可以分成 \(l\) 和 \(r+1\) 两部分。用权值线段树维护,在第 \(l\) 天的时候就将该计划的内容加入权值线段树中,直到过了该计划的时间,也就是第 \(r+1\) 天,再将这个计划的内容删除。把每一天需要修改的内容存进 vector
阅读全文
摘要:分析 两眼线段树题。 对于从第 \(l\) 列走到第 \(r\) 列,我们的出发、到达情况共有 \(4\) 种,分别是: \(l\) 列第 \(1\) 行到 \(r\) 列第 \(1\) 行。 \(l\) 列第 \(1\) 行到 \(r\) 列第 \(2\) 行。 \(l\) 列第 \(2\) 行到
阅读全文
摘要:分析 分块。 我们定义 \(\mathit{cnt}_i\) 表示房子 \(i\) 是否出现过,\(\mathit{sum}_i\) 表示在第 \(i\) 个块内没有被摧毁的房子数量,维护的房子是 \((i-1)\times S-1\) 到 \(i \times S\),其中 \(S=\sqrt{n
阅读全文
摘要:分析 对于这道题,首先暴力找出任意两座城市之间的最短路,跑 \(n\) 次 BFS 就行。这里 BFS 的时候可以直接求第 \(i\) 座城市的坐标 \((x_i,y_i)\) 到所有图上坐标的最短路,最后第 \(i\) 座城市到第 \(j\) 组城市的最短路就是 \((x_i,y_i)\) 到 \
阅读全文
摘要:分析 按照 \(k\) 的奇偶分开考虑。 \(k\) 为奇数。一个好的节点有且仅有一个在任意两个有人的节点 \(i,j\) 的路径的交点上的最优位置。若该交点偏移 \(1\) 步,则必然会使路径长度和 \(+1\)。故期望为 \(1\)。 \(k\) 为偶数。任意一个好的节点仍然在任意两个有人的节点
阅读全文
摘要:分析 线段树模板题。 维护一个区间 \([l,r]\) 中 \(\sum\limits_{i=l}^r 10^{n-i}\) 的答案。将某个区间 \([l,r]\) 全部修改成 \(x\) 之后的表示的数就是 \(x \times(\sum\limits_{i=l}^r 10^{n-i})\)。区间
阅读全文
摘要:分析 线段树模板题。 一眼 DP。定义状态函数 \(\mathit{f}_i\) 表示前 \(i\) 个数中,必选 \(\mathit{A}_i\) 时 \(B\) 的最大长度。则有转移方程:\(\mathit{f}_i=\max\{f_j |((1\le j \le i-1 )\land (-k
阅读全文
摘要:分析 乱搞题。 优先考虑 DP。定义状态函数 \(\mathit{f}_i\) 表示在以 \(1\) 为根时,\(i\) 为根的子树中颜色是否相同。如果对于 \(1\) 的每一个儿子 \(j\),都有 \(\mathit{f}_{j}=1\),则输出 \(1\) 就行。 考虑换根的情况。在以 \(i
阅读全文
摘要:分析 一眼 DP。 定义状态函数 \(\mathit{f}_{i,j}\) 表示后 \(i\) 位中,删掉或不删掉第 \(i\) 个数时,使后 \(i\) 个数满足条件的最小步数。 如果删掉第 \(i\) 个数,有转移方程:\(\mathit{f}_{i,1}=\min(\mathit{f}_{i+
阅读全文
摘要:分析 因为 \(a\) 是一直没有改变的,移动的只有 \(b\),所以从 \(a\) 的每一位的贡献入手。 对于 \(a\) 中的从低到高第 \(i\) 位,其对应的十进制值是 \(a_{n-i+1}\times 2^{i-1}\)。注意到 \(b\) 是每次右移一位的,所以在 \(b\) 中能与
阅读全文
摘要:分析 对于一个从小到大(按编号排序)的长度为 \(n\) 的序列 \(A\),有性质:相邻两个数之差的绝对值为 \(1\) 的数量为 \(n-1\)。 那么,对于这道题,能使环剪开一条边使其按编号排序,必有相邻两个 \(i,j\),满足 \((A_i-A_j=1)\) 的数量为 \(n-1\)。注意
阅读全文
摘要:分析 乱搞题。 考虑将区间 \([l,r]\) 中所有人干掉的代价。设 \(cnt_{i}=\max\limits_{j=l}^{r}a_{j,i}\),则代价为:\(\sum\limits_{i=1}^{m}cnt_i\)。很显然,只有在 \(\sum\limits_{i=1}^{m}cnt_i
阅读全文
摘要:分析 接着这个说。 现在我们需要优化 \(\mathit{nxt}_{i}\)。重新定义一下,\(\mathit{nxt}_{i,j}\) 表示在后 \(i\) 个数中,\(j\) 第一次出现的位置,且 \([i+1,\mathit{nxt}_{i+1,a_i}-1]\) 是一个合法串。这玩意很像一
阅读全文

浙公网安备 33010602011771号