blog主に競プロ問題の解説を載せてますこの広告は、90日以上更新していないブログに表示しています。105)枚の1円玉を投げていく。1円玉は半径10で、立つことはない。yi(ともに0以上20000以下)となったとする。このときすでに存在している1円玉と重なってしまった場合は、この投げた1円玉は取り除く。N枚投げ終わったあと、机の上に残っているコインの枚数を答えよ。机の上に残っているすべてのコインとの重複を調べると最悪O(N2)かかってしまう。どの座標にコインがすでにあるかを記録しようとしてもO(200002)のメモリが必要になってしまいMLEとなってしまう。この問題はバケット法を使えば解くことができる。平面を1辺50のブロックに分けて、机の上に残った1円玉がどのブロックに属すかを記録していく。すればメモリの問題も解消でき、重複を調べるべき1円玉の枚数も減らすことができる。重複判定は、投げられた1円玉が属するブロックとその周りの9ブロックにある1円玉について調べればいい。1辺50だと1ブロックに最大10個くらいしか1円玉は存在しえないので、合計10ブロックを調べるのに最大でも100回の演算で済む。読者になるリンクTopCoderCodeforcestwitterGitHubQiitaはてなブログをはじめよう!roiti46さんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。