[技巧] 思维题 长期更新

由于笔者很菜,这篇文章里的术语使用可能有误。

要求用最少步数构造出的某种结果,但不用输出最少步数

例题:2024.10.19 模拟赛 T4。

直接考虑最后的结果长什么样,可能不用真正得到变过去的整个方式。

相邻交换问题

注意:这里说的不是那个 邻项交换排序贪心。

给一个序列,可以交换任意相邻的两个数任意次,问最少多少次能够使这个序列满足某种条件。

例题:2024.10.19 模拟赛 T4。

思路

相邻交换对大小关系的影响不大,交换 \(a _ i\)\(a _ { i + 1 }\) 只会影响数值 \(a _ i\)\(a _ {i + 1}\) 所在位置的前后关系,而不会影响其他 对 数值所在位置的前后关系。

考虑每一对数值的位置关系,对每一对数值找必须怎么走才最优。[合到一起(即贪心)后的正确性考虑能不能使得每个限制都被满足。](?)

增量法

自己规定顺序来增量

好处:

  1. 满足限制(如:大小关系)(我没想起这种做法能做的其他限制)。例:P2513 [HAOI2009] 逆序对数列、[《算法竞赛进阶指南》上 DP 部分的第一道例题](?)。
  2. 在之前的基础上做。例:2024.10.21 模拟赛 T1。

[字典序](?)、位运算结果 最值、第 \(k\) 小值

高位具有决定性。具体:如果高位已经分出了大小就不用比较低位了,此时已有大小关系。

于是:

  • 最值:从高位到低位贪心。
  • \(k\) 小值:确定此时那一位(高位),算低位随意选有多少种方案,根据其与 \(k\) 的关系判断此时那一位选什么,可能要让 \(k\) 减掉[与方案数有关的值](?),再接着选下一位(更低的一位)。

某个东西的个数很少(某个个数很小)

  • 很小:状压、搜索。
  • 特别小:状压、搜索、作为 DP 状态的维度个数(可能还有其他的维度,即可能小于维度个数)。第三点的例题:[《算法竞赛进阶指南》上 DP 部分的第一道例题](?)。
posted @ 2024-10-21 16:48  huangkxQwQ  阅读(2)  评论(0编辑  收藏  举报