交付:贪心解 + 正确性依据

交付:贪心解 + 正确性依据

这是这条路线的最终作品。把前四步的代码合起来,一次验完五条: 六场会按结束早能排 4 场,按开始早只有 1 场 25/10/5/1 找 63:贪心 6 枚,且和最优一致 4/3/1 找 6:贪心 3

阅读更多 →
第四步:背包三连

第四步:背包三连

写出三个背包函数,输出0-1 贪心 / 0-1 最优 / 可切开的贪心三个数。 (切下来那部分用 val * cap // w。)

阅读更多 →
第三步:最短等待,连同穷举验证

第三步:最短等待,连同穷举验证

写出 wait,输出两个数:穷举 24 种排法的最小值,和按耗时排好之后的值。

阅读更多 →
第二步:找零,连同它的反例

第二步:找零,连同它的反例

写出 greedy 和 best,输出三个数: 25/10/5/1 找 63,贪心用几枚 4/3/1 找 6,贪心用几枚 4/3/1 找 6,最优用几枚 三个数用 / 拼起来。

阅读更多 →
第一步:区间调度

第一步:区间调度

最终作品第一步:写出 sched,对六场会跑按结束早和按开始早两种。 把两个场次数拼起来输出(结束早的在前)。

阅读更多 →
四项一起对得上吗

四项一起对得上吗

运行下面这段程序: def greedy(cs, t): n = 0 for c in cs: while t >= c: t -= c

阅读更多 →
交付一个贪心解,必须附上什么

交付一个贪心解,必须附上什么

把一个贪心解交出去,必须同时给出【0】。

阅读更多 →
拿到一个新问题,先做什么

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

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

阅读更多 →
⚠️ 把交换论证写成一段能跑的代码

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

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

阅读更多 →
⚠️ 穷举验证:排序的结果就是最小

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

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

阅读更多 →