Loading

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\)\()\) 的成本
    - 贪心找到最优操作的构造方法, 加上优化 / 找共同点

思路

题意
定义

对于一个长度为 LL0101pp , 定义一个 0101qq 关于 pp 是好的, 仅当 i[1,n]\forall i \in [1, n] , 满足 pip_i 可以作为 qq 中一段包含 ii 的区间的众数
定义 s|s|ss11 的个数, g(p)g(p) 为所有关于 pp 是好的串 qq 中最小的 q|q|

要求

给你一个长度为 nn0101ss, 求 ss 所有子串的 gg 的和

显然是要先去找好串之性质
最初认为简单的按照 \(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\) 维并没有什么作用, 分成两次统计即可

讨论当前子树是作为最大值出现还是作为非最大值 \((\)当然也可以作为最大值\()\)
有点没静下心来导致没能不浮躁, 呃呃呃

  • 作为最大值
    • 插入之前较小的
  • 作为小值

呃呃呃, 不难吃一车罚时, 耶耶耶

posted @ 2025-03-11 21:08  Yorg  阅读(16)  评论(0)    收藏  举报