https://yukicoder.me/problems/no/2573
で解くことが可能です。
想定解法ではそれぞれの駒からそれぞれのマスへ少なくとも 本の辺を貼る必要があるので、これを削減することを考えます。
をコマ が へ移動するのに必要な最小のコストとします。
は について傾きが と変化する区分線形関数となっています。よって、この問題は頂点 からなり、以下のように辺が貼られているグラフの から への最小費用流に帰着されます。
- 頂点 から頂点 への容量 , コスト の辺
- 頂点 から頂点 への容量 , コスト の辺
- 頂点 から頂点 への容量 , コスト の辺
- 頂点 から頂点 への容量 , コスト の辺
- 頂点 から頂点 への容量 , コスト の辺 ( はコマ が右上か左上への移動のみで に到達できるようなものとする )
このままでは辺数が になりますが、 行目の として考えられるものが区間の形になっていることに注目すれば、区間に辺を貼るテクによって辺数が となるので、計算量 でこの問題を解けました。