补空白

10 分钟

地图上空着的那块,就是接下来几天的重点。补空白的原则是"集中攻一类":与其今天线段树、明天图论各碰一下,不如盯住一类连做三五天,做到能默写、能变形。东一榔头西一棒,每个都学个开头,考场上一个都用不上。

比如很多人空在动态规划,那就先啃最基础的 01 背包:

int dp[1005];   // dp[j]: 容量为 j 时能装的最大价值
for (int i = 1; i <= n; i++)
    for (int j = W; j >= w[i]; j--)   // 逆序遍历容量
        dp[j] = max(dp[j], dp[j - w[i]] + v[i]);

复杂度 。这里的核心坑是内层循环必须逆序——因为每件物品只能选一次,逆序才能保证 dp[j-w[i]] 用的是"还没放第 件"时的值;写成正序就变成了完全背包(每件可选多次)。补一类,就补到能讲清这种细节为止。

小纸条

挑出你最空的一块。

登录 后可看答案

补空白 · 考级冲刺 · op599 课程