三个数摆在一起看

同一批物品、同一个容量,一次输出三个数:0-1 贪心 / 0-1 最优 / 可切开的贪心。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

交换论证在证明什么(C++)

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

开始练习 →

交换论证的一步怎么走

第 1 步:任务耗时 4 1 3 2 第 2 步:前两个是一处逆序 第 3 步:把它俩换过来 第 4 步:后面的人完成时刻不变 第 5 步:只有换到前面的人提早了 4 1 3 2 交换论证的每一步是【0】。

开始练习 →

把一处逆序换过来

四个任务耗时 4、1、3、2,前两个是一处逆序(大的排在小的前面)。把它俩换过来,看总等待时间的变化。 运行下面这段程序: #include <algorithm> #include <iostream> #incl

开始练习 →

穷举 24 种顺序最小是多少

四个任务一共有 24 种排法,用 next_permutation 全部过一遍。 运行下面这段程序: #include <algorithm> #include <iostream> #include <str

开始练习 →

写出总等待时间

补全 wait_total:按给定顺序做任务,把每个任务的完成时刻加起来。对 4、1、3、2 输出结果。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

交换一处相邻逆序

补全 fix_one:从左往右找第一处相邻逆序(前面的比后面的大),把这两个换过来,返回新顺序。把换之前和换之后的总等待时间用 / 拼起来输出。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

穷举验证排序就是最小

把四个任务的 24 种排法全跑一遍,取出最小的总等待时间;再算一遍按耗时排好的结果。两个数用 / 拼起来输出(穷举的在前)。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

把交换论证写成代码

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

开始练习 →

拿到新问题先做什么

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

开始练习 →