网络流 广义切糕模型

问题形式

\(n\) 个整数变量 \(x_{1\sim n}\),满足 \(1\le x_i\le m_i\),其中 \(x_i\)\(j\)\(w(i,j)\) 的代价,\(q\) 组约束 \((u,v,w)\) 表示 \(x_u\le x_v+w\;(w> 0)\),最小化总代价

解法

考虑转化为最小割

对于每个 \(i\) 建立 \(m_i\) 个点 \(p_{i,j}\;(1\le j\le m_i)\),令 \(p_{i,0}=S\),则 \(p_{i,j-1}\)\(p_{i,j}\) 连容量 \(w(i,j)\) 的边,\(p_{i,m_i}\)\(T\) 连容量 \(\infty\) 的边,若割了 \(p_{i,j-1}\)\(p_{i,j}\) 之间的边则表示 \(x_i=j\)

对于每条限制 \((u,v,w)\),等价于要求对于任意 \(i\)\(\forall t>w\)\((p_{u,i+t-1},p_{u,i+t})\)\((p_{v,i-1},p_{v,i})\) 不能同时被割,等价于 \(S\)\(p_{u,i+t}\) 连通 和 \(p_{v,i}\)\(T\) 连通 中至少一个成立,令 \(p_{u,i+t}\)\(p_{v,i}\) 连容量 \(\infty\) 的边

最小割即为答案

时间复杂度 \(O(N^2M)=O((\sum m_i)^2(\sum m_i+q))\)

模板:P3227 [HNOI2013] 切糕

\(n\times m\) 个变量,都在 \([1,r]\) 中,\(x_{i,j}\)\(v\) 的代价为 \(w(i,j,v)\),要求任意两个相邻(上下或左右)的变量的差不超过 \(d\),求最小代价,\(n,m,r\le40\)

直接按上述方式建图即可

时间复杂度 \(O(N^2M)=O((nmr)^3)\)

代码

参考

  1. 网络流之广义切糕模型
posted @ 2025-04-02 08:18  Hstry  阅读(32)  评论(0)    收藏  举报