# Reply Codechallenge 2021 # 問題概要 ## 概要 H * Wのグリッドを考える。 N個のビルが既にグリッドに置いてある。 M個のアンテナを持っている(まだグリッドに置かれていない)。 あなたの仕事は、アンテナをグリッドに配置して(なお、アンテナは置かなくても良い)、スコアを最大化することである。 ビルは - パラメーター1 $B_L$ - パラメーター2 $B_C$ アンテナはそれぞれ - 通信距離 $A_R$ - パラメーター $A_C$ を持つ。 ## スコア計算 スコアは、**ビルごと**の「良さ」の総和である。ただし、全部のビルが通信できるアンテナを一つ以上持つ時、スコア R が追加で貰える。 ### ビル b の良さ アンテナ a とビル b の相性 s(a, b) は以下。 - s(a, b) = $B_C[b] \times A_C[a] - B_L[b] \times \mathrm{dist}(b, a)$ ビル b の良さは、ビルまでの距離が$A_R$以下のアンテナ全部についての、max s(a, b) である。 通信できるアンテナが一つもない場合は、ビルbの良さは0。(ビルの良さが負になりうることもある?) ## 注釈 - 距離は全部マンハッタン距離 - ビルの置いてある場所は全部distinct - アンテナはビルと同じマスに置ける。 - アンテナ同士を同じマスに置くことは出来ない。 ## 入力形式 ``` W H N M R Bx1 By1 Bl1 Bc1 Bx2 By2 Bl2 Bc2 : BxN ByN BlN BcN Ar1 Ac1 Ar2 Ac2 : ArN AcN ``` ## 出力形式 ``` M id_1 Ax[id_1] Ay[id_1] id_2 Ax[id_2] Ay[id_2] : id_M Ax[id_M] Ay[id_M] ``` 実際は空行は消すこと ## スコア スコア # 便利ツール ## calcscore(予定) 置き場: ```Dropbox/Hashcode2020/2021/maroon/calcscore/calcscore.cpp``` 使い方: `./calcscore infile outfile` stdout に得点が出てくる invalidな入力を入れるとぶっ壊れたりぶっ壊れなかったり `g++ calcscore.cpp -o calcscore -std=c++14 -O2` ## watch 各自のディレクトリ下にa.outもしくはa_hoge.outとかのファイル名で出力を出しておくと勝手に収集する # ケース解析 ## A (W=15, H=10, N=5, M=4, R=100) ``` Bl Average : 2.6, Max: 4, Min: 1 Bc Average : 26.6, Max: 44, Min: 14 Ar Average : 2.25, Max: 4, Min: 1 Ac Average : 50, Max: 100, Min: 10 MaxScore: 13300 ``` ## B (W=400, H=400, N=50000, M=1014, R=4e7) ``` Bl Average : 50.0925, Max: 100, Min: 0 Bc Average : 49.86006, Max: 100, Min: 0 Ar Average : 2.87376725838264, Max: 100, Min: 0 Ac Average : 1983.71104536489, Max: 4992, Min: 500 MaxScore: 12445070976 ``` ## C (W=600, H=600, N=60000, M=60000, R=5e7) N=Mなのがポイント!!!!多分マッチング的な完全解があるやつだとおもいます(chokudai) ``` Bl Average : 0, Max: 0, Min: 0 Bc Average : 50.0318666666667, Max: 100, Min: 0 Ar Average : 0, Max: 0, Min: 0 Ac Average : 500.63425, Max: 1000, Min: 1 MaxScore: 3001912000 ``` ## D (W=1200, H=1200, N=40000, M=1123, R=5e7) $B_L = B_C$ ビルが固まってるところとそうでもないところがある(ビジュアライザ情報) ``` Bl Average : 55.106325, Max: 100, Min: 10 Bc Average : 55.106325, Max: 100, Min: 10 Ar Average : 7.28317008014248, Max: 100, Min: 0 Ac Average : 2351.53873552983, Max: 4994, Min: 1 MaxScore: 11008039482 ``` ## E (W=2000, H=2000, N=200000, M=6257, R=3e7) ``` Bl Average : 50.022235, Max: 76, Min: 23 Bc Average : 49.51128, Max: 86, Min: 23 Ar Average : 2.62090458686271, Max: 119, Min: 0 Ac Average : 1854.79319162538, Max: 7990, Min: 1 MaxScore: 79119025440 ``` ## F (W=6000, H=6000, N=350000, M=32515, R=2e8) ``` Bl Average : 49.0598457142857, Max: 97, Min: 2 Bc Average : 59.3232942857143, Max: 100, Min: 2 Ar Average : 3.33003229278794, Max: 200, Min: 0 Ac Average : 2450.33110871905, Max: 5000, Min: 1 MaxScore: 103815765000 Arが100以上:75個 Arが50以上:78個 Arが30以上:159個 ```