2021年2月27日土曜日

キャディプログラミングコンテスト2021 (ABC 193) F - Zebraness

キャディプログラミングコンテスト2021 (ABC 193) F - Zebraness

マスを二つに分類する最適化問題なので、最小カットで解けないかと思ってyosupoさんの記事で解ける条件を確認する。

「Xが赤で、Yが青ならZ円の報酬」
「Xが赤で、Yが赤ならZ円の罰金」
は最大カットになって解けないと思います。

この問題は異なる色に塗ると得になる制約なので、解けそうにない……と思ったが、市松模様の一方の色を反転すると、同じ色なら得になる制約に変換できる。

10410^4頂点なので一般のフローアルゴリズムで解けるのかわからなかったが、とりあえず書くと通った。

Dinicの計算量について
https://misawa.github.io/others/flow/dinic_time_complexity.html