⚠️ 三个数摆在一起看

同一批物品、同一个容量,一次输出三个数:0-1 贪心 / 0-1 最优 / 可切开的贪心。 这三个数就是"什么时候该换 DP"的全部答案。

开始练习 →

交换论证在证明什么

交换论证要说明的是【0】。

开始练习 →

交换论证的一步是怎么走的

交换论证的每一步是【0】。

开始练习 →

把一处逆序换过来

四个任务耗时 [4, 1, 3, 2],前两个是一处逆序(大的排在小的前面)。把它俩换过来,看总等待时间的变化。运行下面这段程序: def wait(order): t = 0 s = 0 for x in orde

开始练习 →

穷举 24 种顺序,最小是多少

四个任务一共有 24 种排法。运行下面这段程序: from itertools import permutations def wait(order): t = 0 s = 0 for x in order:

开始练习 →

写出总等待时间

补全 wait:按给定顺序做任务,把每个任务的完成时刻加起来。对 [4, 1, 3, 2] 输出结果。

开始练习 →

写出"交换一处相邻逆序"

补全 fix_one:从左往右找第一处相邻逆序(前面的比后面的大),把这两个换过来,返回新顺序。 把换之前和换之后的总等待时间拼起来输出。

开始练习 →

⚠️ 穷举验证:排序的结果就是最小

把四个任务的 24 种排法全跑一遍,取出最小的总等待时间;再算一遍按耗时排好的结果。 两个数拼起来输出(穷举的在前)。

开始练习 →

⚠️ 把交换论证写成一段能跑的代码

交换论证的核心是一句话:换掉一处相邻逆序,总等待时间不会变大。 把 24 种排法全过一遍验证两件事: 所有相邻逆序换过来,总和都不变大 → 应为 True 所有相邻正序换过来,总和也都不变大 → 应为 False 两个判断拼起来输出。

开始练习 →

拿到一个新问题,先做什么

想用贪心解一个新问题,第一件事是【0】。

开始练习 →