3.10 CW 综合训练
前言
现在开始当上午, 按照策略做就行了
不要浮躁, 心态注意冷静耐心放下即可
\(\rm{A}\)
省流: 会, 但是没打, 看题解大概是对的
- 定义操作 (约束) 和开销 / 收益, 要求最值化开销 / 收益
- 将约束条件数学化
- 方便高效维护
- 最优化问题的瓶颈, 考虑找最优解的性质来处理
- 逐元素处理
- 先找到统一的构造方式
- 直接处理
- 推导动态规划
- 枚举开销对应的值\((\)超过 \(x\) / 不大于 \(x\) / 长度为 \(x\)\()\) , 然后考虑对于这个值进行
- 贪心
- 判断合法性
- 往往拥有单调性
- 先找到一组简单的合法解, 然后在基础上进行调整, 使其花销更优
- 将约束条件数学化
思路
有点复杂, 肯定先转化题意
先找一下能够排列成合法情况的性质
发现直接做不好搞到判定方法
一个比较复杂的性质是对于每个颜色提取若干二元对, 然后把二元对做匹配, 能匹配上一定有解
但是仍然不好做
干脆考虑什么时候无解, 还是不好想
换一下思路, 然后发现上面的想法不太正确
发现只能 \(\rm{dp}\) 做, 发现复杂度是对的
六百六十六, 真的是这么做的
状压仙人发力了
既然是 \(\rm{vp}\) 这题代码先不管了
\(\rm{B}\)
省流: 会
-
定义操作 (约束) 和开销 / 收益, 要求最值化开销 / 收益
- 模拟操作, 找性质
- 将约束条件数学化
- 方便高效维护
- 最优化问题的瓶颈, 考虑找最优解的性质来处理
- 逐元素处理
- 先找到统一的构造方式
- 直接处理
- 推导动态规划
- 枚举开销对应的值\((\)超过 \(x\) / 不大于 \(x\) / 长度为 \(x\)\()\) , 然后考虑对于这个值进行
- 贪心
- 判断合法性
- 往往拥有单调性
- 先找到一组简单的合法解, 然后在基础上进行调整, 使其花销更优
- 要求一个数列的多个部分 \((\)前缀, 子串 \(\cdots\)\()\) 的成本
- 贪心找到最优操作的构造方法, 加上优化 / 找共同点
- 跳跃 / \(\cdots\) 等建图问题
- 考虑优化建图
-
推导贪心策略的常用方法
- 反证 + 作差
- 增量法
- 交换相邻元素法
思路
继续转化题意, 不然没得做
如何使得 \(\sum_{i = 1}^{k - 1} |b_{p_i} - b_{p_{i + 1}}|\) 最小, 这个比较关键
必须找到这个带有的一些性质
思路对的, 完成李
\(\rm{C}\)
省流: 会, 但是没打, 看题解大概是对的
树树形形, 做一下就会了
不打了
\(\rm{D}\)
省流: 会, 但是没打, 看题解大概是对的
思路
首先需要想的是按区间 \(\rm{dp}\) , 还是按点 \(\rm{dp}\)
布吉岛啊
好好好, 简单维护完成了
\(\rm{E}\)
省流: 会了一半
今天居然都比较的会, 有点神奇的
哦原来是难度升序, 建议改成乱序, 这下这下了
这下不得不认真做了, 蓝还是挺够一够的, 有点有点了
- 定义合法情况, 要求输出一组合法情况 / 合法情况的最值问题 / 求方案数
- 将条件数学化
- 往往利用 \(\rm{dp}\) , 结合约束处理当前方案数
- 关注构造方案 / 顺序
- 在处理同时判定合法性
- 前后的无后效性\((\)不相关性\()\)
- 由合法情况导出的答案
- 先考虑最终答案的表达式 \((\)合法解的构造方案\()\) , 基础上进行 \(\rm{dp}\)
- 关注本质重复的转移是否存在
- 找到所有情况统一的构造方案
- 构造: 先推性质, 不行打表
- 贪心
- 往往应该把选择权留到后面去
- 超过一半类
- 构造一组都满足 \(a\) 条件的, 然后剩下的构造一个满足 \(a\) , 一个满足 \(b\) 的, 这样一定超过一半
- 先找到一组简单的合法解, 然后把其他情况分讨或转化
- 贪心
- 构造: 先推性质, 不行打表
- 先找到一组简单的合法解, 然后在基础上进行调整, 使其花销更优
- 模拟操作情况
- 找到最好开销, 注意最大和最小
- 先找到一组合法解, 然后观察性质
- 逆向思维
- 列出合法情况需要满足的表达式
- 在原序列中贪心选择最优情况
- 然后在基础上进行调整
- 找到不合法情况在什么时候出现, 通过对不合法情况的转化构造最优的合法情况
- 一般优先考虑枚举性质更多, 或者确定性更强的元素
- 要求一个数列的多个部分 \((\)前缀, 子串 \(\cdots\)\()\) 的成本
- 贪心找到最优操作的构造方法, 加上优化 / 找共同点
思路
题意
定义
对于一个长度为 的 串 , 定义一个 串 关于 是好的, 仅当 , 满足 可以作为 中一段包含 的区间的众数
定义 为 中 的个数, 为所有关于 是好的串 中最小的
要求
给你一个长度为 的 串 , 求 所有子串的 的和
显然是要先去找好串之性质
最初认为简单的按照 \(01\) 连续串分段处理即可
但是发现被 1 0 1 这种数据卡了
那咋办
没有什么好的想法, 无敌了
发现原来想法改改就是 \(\mathcal{O} (n^2)\) , 赢赢赢
那咋搞 \(\mathcal{O} (n)\)
发现可以继承之前的右端点, 做完了
日日日, 假假假, 还是不太对啊, 改改可以对, 无语了
\(\rm{F}\)
有点意思打一下
主要是想验证自己的想法正确性
思路
你注意到我没有关于树形 \(\rm{dp}\) 的公式, 所以只能半公式化做题
路径类问题, 显然可以直接找到按 \(\rm{LCA}\) 划分的性质, 就可以树形 \(\rm{dp}\) 了, 比较美丽
设 \(f_{u, 0/1/2, 0/1}\) 表示以 \(u\) 为头的祖先-后代链的最大危险路口数量为 \(0/1/2\) , 其中 \(u\) 是否是危险路口的方案数
为什么定义成最大真就直觉了, 感觉这样方便合并答案, 呃呃呃, 差不多
做法难在实现, 放到框架里面去考虑
实现
考虑合并子树 \((\)想炫技不会正常做法\()\)
发现 \(01\) 维并没有什么作用, 分成两次统计即可
讨论当前子树是作为最大值出现还是作为非最大值 \((\)当然也可以作为最大值\()\)
有点没静下心来导致没能不浮躁, 呃呃呃
- 作为最大值
- 插入之前较小的
- 作为小值
呃呃呃, 不难吃一车罚时, 耶耶耶

浙公网安备 33010602011771号