补空白
约 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]] 用的是"还没放第 件"时的值;写成正序就变成了完全背包(每件可选多次)。补一类,就补到能讲清这种细节为止。
小纸条
挑出你最空的一块。
登录 后可看答案