AGC036D题解
考虑把不存在负环转换为存在差分约束。
由于 \(i \rightarrow i+1\) 的 \(0\) 边不能删,因此有 \(x_i\geq x_{i+1}\),然后是经典操作,把大小限制转为差分,令 \(q_i=x_{i}-x_{i+1}\),那么这个限制就是 \(q_i\geq 0\)。
考虑保留一条 \(i \rightarrow j\) 的 \(-1\) 边,有 \(x_i-1\geq x_j\),即 \(x_i-x_j\geq 1\),即 \(q_i+q_{i+1}+\cdots+q_{j-1}\geq 1\),对应 \(q\) 的一段区间和 \(\geq 1\)。
考虑保留一条 \(j \rightarrow i\) 的 \(+1\) 边,有 \(x_j+1\leq x_i\),即 \(x_i-x_j\geq 1\),即 \(q_i+q_{i+1}+\cdots+q_{j-1}\leq 1\),对应 \(q\) 的一段区间和 \(\leq 1\)。
反过来想,当 \(q\) 确定的时候,满足以上限制的边都可以保留,否则都要删除,现在就是要确定 \(q\) 的最小代价。
显然 \(q\) 取 \(\{0,1 \}\) 是最优的,至少可以少删除 \(i+1\rightarrow i\)。
考虑 \(dp_{i,j}\) 最后一个 \(1\) 在 \(i\),倒数第二个 \(1\) 在 \(j\) 的最小代价(不考虑 \(i\) 之后一段 \(0\)),转移可以用二维前缀和预处理转移系数,答案就是 \(dp_{i,j}\) 加上最后一段 \(0\) 的贡献。
浙公网安备 33010602011771号