贡献转 $01$
up:这好像是保序回归问题的一种特殊情况。关于保序回归问题详情请参见2018国家集训队论文《浅谈保序回归问题》(高睿泉)。
问题形式
定义将序列 \(a\) 变成序列 \(b\) 的代价是 \(\sum_{i=1}^{m} |a_i - b_i|\)。求使得序列 \(b\) 满足条件 \(A\) 的 \(a\) 变成 \(b\) 的最小代价。
适用条件
-
偏序限制:条件 \(A\) 是形如若干 \(a_i \le a_j\)。
-
可差分:将 \(x\) 变成 \(y\) 的代价是 \(|x - y|\)。
做法
记 \(a^k\) 是将 \(a\) 序列中 \(\le k\) 的数赋值成 \(0\),将大于 \(k\) 的数赋值成 \(1\) 得到的新序列。答案是使所有 \(k \in \mathbb{Z}\),\(a^k\) 满足条件 \(A\) 的最小代价的和。
证明
这是答案下界
记 \(F(S)\) 表示将序列 \(S\) 变成满足条件 \(A\) 的最小代价。
由条件 \(2\) 可得,\(|x - y| = \sum_{k \in \mathbb{Z}} |[x > k] - [y > k]|\),所以
\(\sum_{i=1}^{n} |a_i - b_i| = \sum_{i=1}^{n} \sum_{k \in \mathbb{Z}} |[a_i > k] - [b_i > k]| = \sum_{k \in \mathbb{Z}} \sum_{i=1}^{n} |[a_i > k] - [b_i > k]|\),即由 \(a\) 变 \(b\) 的代价等价于对所有 \(k \in \mathbb{Z}\),\(a^k\) 变成 \(b^k\) 的代价和。
又由条件 1 可得,\(b\) 合法的必要条件是对所有 \(k \in \mathbb{Z}\), \(b^k\) 合法。
所以 \(\sum_{k \in \mathbb{Z}} \sum_{i=1}^{n} |[a_i > k] - [b_i > k]| \ge \sum_{k \in \mathbb{Z}} F(a^k)\),即这是答案的一个下界。
能取到下界
记 \(g^k\) 表示 \(a^k\) 变成满足条件 \(A\) 代价最小的一个 01 串。
下界能取到等价于存在一个 \(b\) 序列, 使得 \(\forall k \in \mathbb{Z}, b^k = g^k\),而这等价于随着 \(k\) 的减少,\(\forall i \in [1,n]\),\(g^k_i\) 不升,即每个位置恰好一次从 \(0\) 变成 \(1\)。
下面是构造性证明。
将问题建模成最小割问题。将 \(g^k_i\) 抽象成点 \(i\),用源点和汇点分别表示选 \(1\) 和选 \(0\)。如果 \(a^k_i = 1\),将源点 \(s\) 向点 \(i\) 连容量为 \(1\) 的单向边;如果 \(a^k_i = 0\),将点 \(i\) 向汇点 \(t\) 连容量为 \(1\) 的单向边。对于条件 \(A\) 中所有偏序关系 \(a_i \le a_j\),将点 \(i\) 向点 \(j\) 连容量为正无穷的边。那么 \(F(a^k)\) 就等于该网络的最小割,并且对于最小割 \((S,T)\),如果点 \(i \in S\), 那么 \(g^k_i = 1\),否则 \(g^k_i = 0\)。
随着 \(k\) 的减小,输入 \(a^k\) 满足 \(\forall i \in [1,n]\),\(a^k_i\) 从 \(0\) 变成 \(1\) 恰好一次。所以每次 \(k\) 减小 \(1\),相当于将一些边 \((v,t,1)\),修改成 \((s,v,1)\),感性理解如果我们每次选取最大源集 \(S\),这只会使得 \(S\) 不断扩大,所以随着 \(k\) 的减小,每个点 \(i\) 恰好从 \(T\) 中归为 \(S\) 一次,每个 \(a^k_i\) 恰好从 \(0\) 变成 \(1\) 一次,对于下界的所有 \(g^k\),必然能找到一个对应的 \(b\),证毕。
其中关于随着 \(k\) 的减小,最大源集 \(S\) 只可能扩大的证明将在文末给出。
例题
P12667 [KOI 2023 Round 2] 傻瓜锁。
补充证明
我们要证明:对于网络 \((V,E)\),每次将一条边 \((v,t)\) 修改成 \((s,v)\),得到的新最大源集 \(S'\),和原本的最大源集 \(S\),满足关系 \(S \subseteq S'\),其中最大源集的含义是:对于一个网络的所有最小割 \((S,T)\) 中,\(|S|\) 最大的 \(S\)。
对网络 \((V,E)\),记 \(f(u,v)\) 表示边 \((u,v)\) 的容量,\(g(S)\) 表示割 \((S,V \setminus S)\) 的大小。
引理 \(1\)
\(\forall X \subseteq Y \subseteq V,u \notin Y\),有 \(g(X \cup \{u\})-g(X) \ge g(Y \cup \{u\})-g(Y)\)。
证明:
\(g(X \cup \{u\})-g(X) = \sum_{v \in V \setminus (X \cup \{u\})}f(u,v)-\sum_{v \in X}f(v,u)\)。
所以上式等价于 \(\sum_{v \in V \setminus (X \cup \{u\})}f(u,v)-\sum_{v \in X}f(v,u) \ge \sum_{v \in V \setminus (Y \cup \{u\})}f(u,v)-\sum_{v \in Y}f(v,u)\)。
由于 \(X \subseteq Y\),所以 \(V \setminus (Y \cup \{u\}) \subseteq V \setminus (X \cup \{u\})\)。
结合二者可得:\(\sum_{v \in V \setminus (X \cup \{u\})}f(u,v) \ge \sum_{v \in V \setminus (Y \cup \{u\})}f(u,v)\),且 \(\sum_{v \in Y}f(v,u) \ge \sum_{v \in X}f(v,u)\)。
将两式相加并移项,即得上式。证毕。
引理 \(2\)
\(\forall A,B \subseteq V\),有 \(g(A)+g(B) \ge g(A \cup B)+g(A \cap B)\)。
证明:
记 \(T = B \setminus A\),\(C = A \cap B\)。显然有 \(C \subseteq A\)。
接下来我们不断取 \(u \in T\),直到 \(T = \emptyset\) 为止。显然 \(u \notin C\),由引理 \(1\) 可得,\(g(C \cup \{u_1\})-g(C) \ge g(A \cup \{u_1\})-g(A)\)。接下来对 \(C \cup \{u_1\}\) 和 \(A \cup \{u_1\}\) 再操作,得 \(g(C \cup \{u_1,u_2\})-g(C \cup \{u_1\}) \ge g(A \cup \{u_1,u_2\})-g(A \cup \{u_1\})\)。将得到的所有不等式相加,得到 \(g(C \cup T)-g(C) \ge g(A \cup T)-g(A)\),即 \(g(B)-g(A \cap B) \ge g(A \cup B)-g(A)\),即 \(g(A)+g(B) \ge g(A \cup B)+g(A \cap B)\),证毕。
原命题证明
上述其实就是割容量函数具有次模性的证明。接下来开始证明原命题。
证明:
记 \(g(S)\) 表示原图中割 \((S,V \setminus S)\) 的大小,\(g'(S)\) 表示将边 \((v,t)\) 翻转成 \((s,v)\) 后,割 \((S,V \setminus S)\) 的大小,记 \(d = f(v,t)\)。
假设 \(S \not \subseteq S'\),即 \(\exists x \in S,x \notin S'\)。
我们考虑 \(g(S)\) 和 \(g'(S)\) 的关系。如果 \(v \in S\),则 \(g'(S) = g(S)-d\);如果 \(v \notin S\),则 \(g'(S) = g(S)+d\)。我们不妨记 \(I(S) = [v \in S]\),则上式可以表示成 \(g'(S) = g(S)+d-2dI(S)\),即 \(g(S) = g'(S)-d+2dI(S)\)
由 \(S \not \subseteq S'\) 得,\(S' \subsetneq S \cup S'\),结合 \(S'\) 是新图的最大源集,得 \(g'(S') \lt g'(S \cup S')\)。
由 \(S\) 是原图最小割可得,\(g(S) \le g(S \cap S')\)。
由引理 \(2\) 可得,\(g(S)+g(S') \ge g(S \cup S')+g(S \cap S')\)。结合 \(g(S) \le g(S \cap S')\) 可得,\(g(S') \ge g(S \cup S')\)。
对上式变形得到 \(g'(S')-d+2dI(S') \ge g'(S \cup S')-d+2dI(S \cup S')\),即 \(g'(S') \ge g'(S \cup S')+2d(I(S \cup S')-I(S'))\)。
如果 \(I(S') = 0\),则 \(I(S \cup S') - I(S') \ge 0\);如果 \(I(S') = 1\),则 \(v \in S'\),由 \(S' \subseteq S \cup S'\) 得,\(v \in S \cup S'\),即 \(I(S \cup S')-I(S') = 0\)。所以 \(I(S \cup S')-I(S') \ge 0\)。
所以 \(g'(S') \ge g'(S \cup S')\),与 \(g'(S') \lt g'(S \cup S')\) 矛盾。证毕。

浙公网安备 33010602011771号