ABC298 F - Rook Score

初めに

atcoder.jp 解けなかったので

敗因

解法

座標圧縮などをして  N \times N のグリッド上の問題に言い換えておきます.

また行を固定した際(行  i とします)に, 列をどう決めるかを考えます.

まず列(列  j とします)の総和を求めておきます.総和の大きい順に選んでいっていけばよいのですが,  A_{i \, j} を引かなければいけません. しかし,  A_{i \, j} = 0 のとき,  0 \le A_{i \, j} より, そこで探索を打ち切ってしまってよいです. よって, 列をみる数は高々  2N 回になることが分かります.

よって  O(N) でこの問題が解けました.

atcoder.jp

終わりに

おもしろい