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\) 的贡献。

posted on 2022-11-07 09:55  cool_tyl  阅读(20)  评论(0)    收藏  举报