ABC332G

发布时间 2023-12-11 21:11:37作者: qwq_123

题面

\(n\) 种颜色的球,第 \(i\) 种颜色的球有 \(a_i\) 个,有 \(m\) 个盒子,第 \(i\) 个盒子能装 \(b_i\) 个球,第 \(i\) 个颜色的球在第 \(j\) 个盒子中最多装 \(ij\) 个,求最多能装多少个球。

\(n\le 500,m\le 5\times 10^5 a_i,b_i\le 10^{13}\)

题解

要注意到这是个网络流模型:

  • \(S\to i\),流量为 \(a_i\),记为 \(A\) 类边。\(n+j\to T\) ,流量 \(b_i\)\(B\) 类边。\(i\to n+j\) 流量 \(ij\)\(C\) 类边

然后我们考虑最小割!

\(1\sim n\) 中我们选出一些点组成 \(S\) ,这些点割 \(A\) 类边,记 \(k=\sum_{x\in S}x\)

那么对于一个右边的点,如果割 \(B\) 类边费用是 \(b_i\) ,割 \(C\) 类边费用就是 \(i\times k\)

那我们就可以从小到大枚举 \(k\) ,用dp算出 \(\min\{\sum_{x\in S}a_x|k=\sum_{x\in S}x\}\) ,然后就可以处理出 \(\sum_{i=1}^m\min(ik,b_i)\)

类似的题还有ARC125E,当时竟然没有写题解...

启发

  • 一类特殊二分图的模拟网络流问题。