随笔分类 - 具体问题 / 单调栈和单调队列
摘要:前言 本来说看看算了的, 这个太猎奇了必须想一下 思路 这种询问是一个区间的, 确实不好搞 先不管询问区间 考虑 \(x\) 是有单调性的, 从这里入手 如果我们钦定 \(x_j\), 现在要找到 \(\min\limits_{i < j} (x_j - x_i)(w_i + w_j)\), 怎么做
阅读全文
摘要:思路 需要找点性质 直接贪显然假了 考虑有没有什么固定的最优解 注意到一种方案是 对于 \(a_i, a_{i + 1}\), 我们可以通过交换这俩然后再吃一个 \(a_{i + 1}\) 来超过 \(i\) 因此最优解有这样的构造方式 首先将整个 \(a\) 分成若干段, 然后在其中找一个元素,
阅读全文
摘要:前言 当思维体操了, 顺手尝试一下新的补题方法 思路 首先需要观察到询问序列中的最大值是解决问题的关键 利用这个显然可以 \(\mathcal{O} (1)\) 求出分两段的最优解, 需要计算 \(\rm{RMQ}\) \(\mathcal{O} (n \log n) - \mathcal{O} (
阅读全文
摘要:前言 第一道有困难的斜率优化, 却到了最后一两天才做到, 无敌了 思路 首先发现瓶颈在于找一个区间的最优 \(s_0\) , 这个必须找到一些性质才能做到线性 考虑最优的分段方式, 每一段的左右两侧必定是相同的, 并且就是这一段的最佳 \(s_0\) , 证明可以考虑如果不是这样, 那么一定可以将右
阅读全文
摘要:前言 看了几道题 树形 \(\rm{dp}\) 动态维护 超级 \(\rm{dp}\) 都是 \(\rm{C}\) , 都不会做, 无敌了 思路 简化题意 对于每只猫, 你可以知道 \(t_i\) 时刻从 \(1\) 号山出发可以恰好接到它, 有 \(p\) 次出发, 假设第 \(i\) 次出发的时
阅读全文
摘要:前言 这些题全部口胡, 到李超线段树了再打代码 好累啊, 昨晚上不该太晚睡的, 中午他们期末也没睡, 精神萎靡 思路 先简化一下题意 对于 \(n\) 个点, 第 \(i\) 个点所在的位置为 \(x_i\) , 其有 \(p_i\) 个物品, 在 \(i\) 点建立仓库的费用为 \(c_i\) ,
阅读全文
摘要:前言 颓颓頽, 哎大家怎么都卷飞了 事已至此, 接着打 思路 首先容易考虑到 \(\rm{dp}\) 考虑令 \(f_i\) 表示解决了前 \(i\) 个任务的最小费用 你发现直接转移是 \(\mathcal{O} (n^3)\) 的, 需要进一步优化 考虑费用提前计算, 当前的分组 \([L, R
阅读全文
摘要:前言 终于进入新专题了家人们 列举一下还要补的专题 矩阵快速幂 组合数学 \(\rm{sos\ dp}\) 不过先不管了, 除了复习, 大部分时候总要向前看的嘛 考试的时候带着耳塞, 不带感觉好吵啊, 但是一直带着会神经衰弱的, 所以只能尝试集中注意力 思路 首先转化题意 给定 \(n\) 条线段,
阅读全文
摘要:思路 先把赛时的思路搬一下 你发现确定两个人的起始点, 其实是可以确定 \(\rm{Alice}\) 的选点可能的, 考虑写个代码验证一下 具体的, 就是分成两个弧, \(\rm{Alice}\) 可以选择一个弧的优势(过半), 然后其他的劣势 感觉现在是猜结论, 全靠感性, 我也不知道怎么解释这个
阅读全文
摘要:思路 容易转化到枚举区间使得区间中的颜色都被全部选择 考虑优化 联想到数据结构处理点对贡献 考虑枚举右端点 \(r\) , 求有多少种 \(l\) 是满足条件的 首先对于 \(r\) 右边出现过的颜色, 区间中一定不能包含 令每个颜色最右边的出现位置为 \(mxp_i\) , 则有 \(\foral
阅读全文
摘要:思路 乍一看非常的复杂, 实际上也非常的复杂 令 \(f_{i, j}\) 表示第 \(i\) 天持有 \(j\) 股的最优赚钱 我们可以枚举从什么地方转移而来, 列出柿子 \[f_{i, j} = \max \{ f_{i - 1, j}, \max_{k} [f_{i - w - 1, k} -
阅读全文
摘要:前言 \(\rm{HD0X}\) 大佬在寝室给我讲了一遍, 一点没听懂, 回机房在听了一遍, 好像懂了 思路 转化题意, 给定 \(n\) 个左开右闭区间 \((l_i,r_i]\), 求去除其中的 \(k\) 个后剩下的区间的并集最多可以覆盖多少个整数 首先考虑朴素 \(\rm{dp}\) 容易发
阅读全文
摘要:算法 考虑 \(\rm{dp}\) 其实谁都知道是 \(\rm{dp}\) , 但是推不出来啊 这个问题的关键点在于注意到每次往回走, 必定需要走到之前只访问过一次的位置, 这样算法才有正确性 容易的, 令 \(f_i\) 表示游览结束前 \(i\) 个点的最小时间花费, 由上面的结论可知, 对于
阅读全文
摘要:算法 考虑 \(\rm{dp}\) 令 \(f_{i, j}\) 表示前 \(i\) 个数中, 分成 \(m\) 组的最小花费 关于转移, 我们有 \[f_{i, j} = \min(f_{k, j - 1} + j \times \rm{Sum}(k + 1, i) + \max(k + 1, i
阅读全文
摘要:算法 题意可以转化成 给定一个基环树森林, 求每颗基环树上的直径长度之和 找环 按照基环树的方法找即可 求直径 (i) 直径不经过环 对于以环上每一个点的子树, 记录直径即可 (ii) 直径经过环 断环为链, 考虑单调队列处理, 具体的 关于为什么需要断环为链: 方便快速处理环上两点间的距离, 显然
阅读全文
摘要:算法 基础 发现插入总在最后一个进行 单调栈维护一个区间的 \(max / min\) 单调队列维护以一个值为 \(max / min\) 的最大区间 显然可以使用单调栈维护 其原理为 当 \(a, b \in seq, a < b, pos[a] < pos[b]\) 那么显然 \(a\) 没有卵
阅读全文

浙公网安备 33010602011771号