把挑最短的写出来比一比

补全:对三场会 (0,4)(3,5)(4,8) 跑两遍 sched——按时长最短和按结束最早。把两个场次数用 / 拼起来输出(最短的在前)。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

让程序自己去搜反例

补全代码:面值 4、3、1,金额从 1 往上一个个试,输出第一个贪心比最优差的金额。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

有的面值搜到 200 也没有反例

同一个搜法跑两组面值,金额都试到 200 为止:4、3、1 输出第一个反例金额;25、10、5、1 搜完都没有就输出 没找到反例。两个结果用 / 拼起来输出。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

贪心和动态规划的根本区别(C++)

贪心和动态规划的根本区别是【0】。

开始练习 →

什么时候必须换成 DP

第 1 步:包能装 10,三件东西 第 2 步:每斤最值钱的是甲,先拿 第 3 步:剩 4 斤,乙丙都放不下 第 4 步:其实拿乙和丙更值钱 甲 乙 丙 重 值 6 30 5 20 5 20 一个问题必须用 DP 而不能用贪心,是因为【0】

开始练习 →

装不下的背包贪心和最优

背包能装 10,三件物品(重量, 价值)是 (6,30)(5,20)(5,20),每件要么整件拿走要么不拿。 运行下面这段程序: #include <algorithm> #include <iostream> #i

开始练习 →

能切开就不一样了

还是这三件、还是装 10,但这次可以切开按比例拿(切下来那部分的价值按 价值 × 剩余容量 ÷ 重量 算,保证整除)。 运行下面这段程序: #include <algorithm> #include <iostream&g

开始练习 →

写 0-1 背包的贪心

补全 knap_greedy:按每斤价值从高到低排(用 denser),装得下就整件拿走。输出总价值。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

写 0-1 背包的动态规划

补全 knap_dp:dp[c] 表示容量 c 时的最大价值,每件物品容量从大往小更新一遍。输出最大价值。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

写可以切开的背包

补全 knap_frac:同样按每斤价值排,装得下就整件拿,装不下就切一块把包填满(切下来的价值用 it.v * cap / it.w)。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →