2026 暑假题集

📅 2026/7/31 15:31:15 👁️ 阅读次数 📝 编程学习
2026 暑假题集

qoj8049 Equal Sums:

https://qoj.ac/problem/8049。

【改变顺序缩小值域】:

考虑将 \(x,y\) 分开,分别做两个背包,最后求答案,但是求答案的时间复杂度是 \(O(n^4)\) 的,不可过。

我们发现时间复杂度的瓶颈是算答案的时候枚举背包容量,背包容量是 \(O(n^2)\) 的,\(i,j\)\(O(n^2)\) 都无法优化,考虑压缩背包容量。

考虑将 \(x,y\) 一起处理,设 \(f_{i,j,k}\) 表示选到 \(x_i,y_j\)\(x\) 的和减 \(y\) 的和为 \(k\) 的方案数,我们将 \(k<0\) 的转移到 \(k+x_i\),将 \(k\ge 0\) 的转移到 \(k-y_i\),这样就能实现一一不漏,而且背包容量被压缩到 \(O(n)\),用前缀和优化就行了。