P6240 好吃的题目 题解
题面稍微有一点不一样。
Statement
给 \(n\) 个物品,每个物品有价值 \(v_i\)、体积 \(w_i\)。
\(q\) 次询问,问考虑 \([L..R]\) 区间的物品,用容量为 \(m\) 的背包最多能装多少价值的物品,有多少种方案,每个物品只能被装一次。
\(n\le 2\cdot 10^4, q\le 10^5, w_i,m_i\le 500, v_i\le 10^6\).
Solution
离线下来猫树分治。每次对于分治区间 \([l..r]\),回答所有跨过 \(mid\) 的询问。
如果我们知道两个“至多”的 01 背包数组,就可以 \(O(m)\) 每次回答。
如何处理出两个“至多”的 01 背包数组呢?在处理“恰好”的数组的同时对前一个取 max。
方案数的转移是显然的。

浙公网安备 33010602011771号