Almost Permutation 题解
看到数据范围直接考虑费用流。
首先直接预处理出每个数的上界和下界,若上界 \(<\) 下界直接特判 \(-1\)。然后考虑构建二分图,左部点为 \(n\) 个点代表这 \(n\) 个数,即第 \(i\) 的点代表第 \(i\) 个数;右部点为 \(n\) 个点代表值域,即第 \(i+n\) 个点代表 \(i\) 值。
将源点向每个左部点连容量 \(1\) 费用 \(0\) 的边,将每个左部点向其上下界范围内的右部点连容量 \(0\) 费用 \(1\) 的边。
最后要将右部点向汇点连边,但是观察到每条(右部点向汇点连的)边的费用和其流量有关系,所以我们考虑拆边,将每个右部点向汇点练的边拆为 \(n\) 条边,每条边容量为 \(1\),费用为 \(x^2-(x-1)^2=2x-1\)。

浙公网安备 33010602011771号