部分点について。なら全探索でよい。なら縦2マスの符号の状態(4通り)を持ちながら左から右にDPすればよさそう。
一般の場合について。燃やす埋めるでできたら話が早いと思ってyosupoさんの記事を眺めると、できそうだ。異なる色に塗ると罰金がかかるタイプの問題であることがポイントか。
以下、yosupoさんのフレームワークに従って考える。粒子を正に塗る、負に塗るという言い方を使う。また、粒子の載っているマスに書かれている数をとする。
- の場合: を正に塗ると円得られる。負に塗ると円失う。→ 最初から円持っているとする。を負に塗ると円失う。
- の場合: を正に塗ると円失う。負に塗ると円得られる。→ 最初から円持っているとする。を正に塗ると円失う。
- 粒子が隣り合っているとき、を正(負)に、を正(負)に塗ると円得られる。を正(負)に、を負(正)に塗ると円失う。→ 最初から円持っているとする。を正(負)に、を負(正)に塗ると円失う。
これをそのままグラフにして、最大フローを流せばよい。
ほとんどのに意味がないのはなんだったんだろう…… 誤読を疑って何度も確認してしまった。