# AHC020 2023/06/11 15:00~19:00 https://atcoder.jp/contests/ahc020/ ## 注意 visualizerで遊ぶ DFSの手を忘れない 全乱択でもいいから回す ## 所感 コストをかけて領域を広げて、目的のpointをカバーする問題。 全住民に届けるのが大事。 各住民毎に最小コストでの受信を出して、その総和にする? 時間2秒だからかなり厳しい。あまり焼かせる気が無さそう。 各住民毎の最小コスト出して、それらをつなぐ最小全域木を作るのが大事そう。 あとはできてから考えるか。 まずは適当解 最高出力P=5,000でこれ ![](https://hackmd.io/_uploads/rJko817D2.png) 最小全域木について、これは構築順によって変わってくるので、 住民をシャッフルして何度も構築し直したらよさそう。 貪欲解、これだと中心の重なりが無駄。 また、周辺領域はedgeコストを加味してベストを出しているが、 実施はedgeコストは少なそう ![](https://hackmd.io/_uploads/ByCvVl7wh.png) edgeコストを0にしたもの。こっちの方が正しそう。 ![](https://hackmd.io/_uploads/HyYgSxXD2.png) これをベースに過剰なpowerを削っていく? 範囲内のKを各Pに紐づけ? 距離順にソートして、山登りができるか。 現在、powerが大きすぎる ![](https://hackmd.io/_uploads/HyMIMb7P3.png) Pを削除して渡す Pを追加して奪う 山登りでそこそこいった。 ![](https://hackmd.io/_uploads/HJ771fXvn.png) これを焼きなましできるか、した。 今は電波が届かなくなったKは最寄りの放送距離からもらうようにしたけど、 そこに乱数入れてちょっとブラす、→あがった。 ![](https://hackmd.io/_uploads/BkJY0fQw3.png) 終了。ラスサブ、時間ギリッギリで通ってよかった。 最終61位。レートは上がらず。 ## 反省会 2p目あたりの人は頂点集合を焼きなまししたっぽい。 そこから、出力強度も焼けるとよいみたい。 最初に全体のMST作って、その辺だけ使うで良かったっぽい。 そうしたら再構築不要になる。 住民を個別にみていたが、凸包として外側だけみたら良かったかも?