Compression要素が全て正のN行M列の行列Aが与えられる。これを各行・列の相対的な大小関係が等しい行列のうち、最大の要素が最小となるような行列A'を求めよ。10^9解法まずAの各行・列に対して、相対的な大小関係を有向グラフを用いて表す。a_{i,k}ならば、頂点(i,j)と(i,k)について双方向に辺をはる。列に関しても同様に辺をはる。すると、A'において値が同じにならなければいけない頂点集合はグラフにおいて強連結成分となる。よって、強連結成分分解をして、DAGを作る。このDAG上において、次のDPを行う。dp[頂点(i,j)に対応するDAG上の頂点]とすればA'が求まる。O(MN(M+N))かかるので間に合わないが、これは、各行・列をソートし、ソート済みの列の隣り合う要素(つまり行iについてはa_{i,j}とa_{i,j+1})に対して大小関係を調べればOKである。O(MNlogMN)なので間に合う。O(MNlogMN)今回はTLが4秒なので、今回のように多少定数倍が大きくても通る。faultしたが、ジャッジ側では問題がなかった(Codeforces側ではコンパイラオプションでスタックサイズを限界まで拡張しているらしい。(1)はてなブログをはじめよう!n_knuuさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。