勝手に解説 topcoder marathon match 82 colorlinker

16
MM82 ColorLinker 勝手に解説

Upload: sho-iizuka

Post on 02-Jul-2015

490 views

Category:

Technology


5 download

TRANSCRIPT

Page 1: 勝手に解説 TopCoder Marathon Match 82 ColorLinker

MM82 ColorLinker勝手に解説

Page 2: 勝手に解説 TopCoder Marathon Match 82 ColorLinker

問題概要(1/6)• N*Nのグリッドが与えられる(20 ≦ N ≦ 60)

• 初期状態では、各々のセルは色が塗られているか、塗られていないかのどちらか(色の種類は2~5)

Page 3: 勝手に解説 TopCoder Marathon Match 82 ColorLinker

問題概要(2/6)•あなたが行える操作•任意のセルに、任意の色を塗る•ただし1つのセルに複数の色を塗ることも可能

•初期状態で色が塗られていたセルにも色を塗ることが可能

Page 4: 勝手に解説 TopCoder Marathon Match 82 ColorLinker

問題概要(3/6)•タスク•同じ色のすべてのセルが、上下左右で連結になるように色を塗る

•ただし、色を塗るとペナルティが加算される(計算方法は後述)

•なるべくペナルティを少なくせよ

Page 5: 勝手に解説 TopCoder Marathon Match 82 ColorLinker

問題概要(4/6)

Page 6: 勝手に解説 TopCoder Marathon Match 82 ColorLinker

問題概要(5/6)•ペナルティの計算方法•整数p (N ≦ p ≦ 8*N) が与えられる•各々のセルについて、塗られている色の数をcとしたときそのセルのペナルティ = c+c*(c-1)*p

• すべてのセルのペナルティを合計する

Page 7: 勝手に解説 TopCoder Marathon Match 82 ColorLinker

問題概要(6/6)•制約•時間制限 10秒(2005年に発売されたXeon 3.6GHz)

• メモリ制限 1024MB•正式な問題文はこちら

Page 8: 勝手に解説 TopCoder Marathon Match 82 ColorLinker

問題からわかること

•そのセルのペナルティ = c+c*(c-1)*p• c: 塗られている色の数•N ≦ p ≦ 8*N

Page 9: 勝手に解説 TopCoder Marathon Match 82 ColorLinker

問題からわかること

•1色で塗ったとき• c+c*(c-1)*p = 1

Page 10: 勝手に解説 TopCoder Marathon Match 82 ColorLinker

問題からわかること•2色で塗ったとき• c+c*(c-1)*p = 2+2*N ~ 2+16*N•複数の色で塗るとペナルティがヤバい•これを避けるためならかなり遠回りしてよい

Page 11: 勝手に解説 TopCoder Marathon Match 82 ColorLinker

私の解法•とにかく繋げてみた

•これはマズイ

Page 12: 勝手に解説 TopCoder Marathon Match 82 ColorLinker

私の解法•ダイクストラっぽい方法で重ね塗りを避けるようにしてみた

•同じ色のセルに移動 → コスト0•空白のセルに移動 → コスト1•別の色が塗られているセルに移動→ c+c*(c-1)*p

Page 13: 勝手に解説 TopCoder Marathon Match 82 ColorLinker

私の解法

✌('ω'✌ )三✌('ω')✌三( ✌'ω')✌

Page 14: 勝手に解説 TopCoder Marathon Match 82 ColorLinker

私の解法•改善が期待できるところ•つなぐ順番を変えれば交差の回数を減らせる場合があった

•「つなぐ順番を焼きなまし法で決めれば良いんじゃね?」

•少しだけスコアが改善された

Page 15: 勝手に解説 TopCoder Marathon Match 82 ColorLinker

私の解法•「高速化して試行回数を増やせばスコア上がるかな?」

•時間を100倍かけて実行してみたが、ほとんどスコア上がらず

•高速化は諦めて別の改善方法を考えたが、思いつかずタイムアップ

Page 16: 勝手に解説 TopCoder Marathon Match 82 ColorLinker

他の人の解法

•上位の人たちは、色の種類が高々5種類しかないことも利用しているっぽい?

• TopCoderのForumでネタばらし会が開催中

•日本の人の投稿は #MM82 で検索