H - Bombs Searching Game
Editorial
/
質問は以下のような形式で出力することによってできる。
また, 質問の返答は, 以下のような出力で行われる。
また, 答えが分かった時に, 以下のような出力をしなければならない。
ただし, この場合 $H = W = 4, N = 4$ なので, 実際のテストケースには存在しない。
ただし, 必ずしも意味のある質問をしているとは限りません。
また, これらの情報で必ずしも盤面が把握できるとは限らず, エスパーをすることも許されはします。
問題作成者: E869120
Time Limit: 1 sec / Memory Limit: 256 MB
配点: $1500$ 点
square1001氏は, 最終兵器として, あるダンジョンに爆弾を仕掛けた。
そのダンジョンは, 左上のマスが $(0,0)$, 右下のマスが $(49,49)$ の $50 \times 50$ の大きさである。
その中には, 250個の爆弾が仕掛けられている。位置はすべて違うマスである。
あなたは, 全ての爆弾の位置を知ることで, そのダンジョンから脱出できる。
「そんなん、どうやって知ればいいんだよ! 全く分かんねぇじゃないか!助けてぇぇぇぇぇ!」
しかし、あなたは以下の質問を何回かできる。
しかし, 質問回数が多くなればなるほど, 爆弾の爆発する確率が高くなり, すなわち生存確率が下がる。
そのため, できるだけ少ない質問回数で爆弾250個の配置を当ててほしい。(その方が得点が高い)
あなたの挑戦を待っている。
問題文
さて, このsquare869120Contest #3も, 最終問題となってしまった。square1001氏は, 最終兵器として, あるダンジョンに爆弾を仕掛けた。
そのダンジョンは, 左上のマスが $(0,0)$, 右下のマスが $(49,49)$ の $50 \times 50$ の大きさである。
その中には, 250個の爆弾が仕掛けられている。位置はすべて違うマスである。
あなたは, 全ての爆弾の位置を知ることで, そのダンジョンから脱出できる。
「そんなん、どうやって知ればいいんだよ! 全く分かんねぇじゃないか!助けてぇぇぇぇぇ!」
しかし、あなたは以下の質問を何回かできる。
- 左上のマス $(a, b)$, 右下のマス $(c, d)$ の区間に何個爆弾があるかを聞くことができる。
しかし, 質問回数が多くなればなるほど, 爆弾の爆発する確率が高くなり, すなわち生存確率が下がる。
そのため, できるだけ少ない質問回数で爆弾250個の配置を当ててほしい。(その方が得点が高い)
あなたの挑戦を待っている。
入出力
最初, 以下のように入力される。$H \ W \ N \ K$
- $H, W$ はダンジョンの大きさである。この問題では, $H, W = 50$ である。
- $N$ はダンジョンの中に含まれる爆弾の数である。この問題では, $N = 250$ である。
- $K$ は最終的な盤面の状態を出力するために使う整数である。
質問は以下のような形式で出力することによってできる。
$? \ a \ b \ c \ d$これは, 左上のマス $(a, b)$, 右下のマス $(c, d)$ の区間に存在する爆弾の数を聞くことである。
また, 質問の返答は, 以下のような出力で行われる。
$p$$p$ は, 質問で聞いた区間に存在する爆弾の総数である。
また, 答えが分かった時に, 以下のような出力をしなければならない。
$! \ ans$ただし, $ans$ は以下の値であり, $r_{i, j}$ は, マス $(i, j)$ にある爆弾の個数である。
- $ans = \sum_{i=0}^{H-1} \sum_{j=0}^{W-1} r_{i, j} 2^{iW + j}$ mod $K$
制約
- $H, W = 50$
- $N = 250$
- $1,000,000,000 \le K \le 1,000,01,000$ ($K$はランダムに与えられる)
得点
5つのテストケースがある。各テストケースに対する得点は, 以下のように計算される。- 質問回数を $Q$ とする。
- $Q > 2500$ のとき, $0$ 点 (Wrong Answer) となる。
- $930 \le Q \le 2500$ のとき, $score = max(\lfloor 125 - 3.2\sqrt{Q - 920} \rfloor, 40)$ となる。
- $880 \le Q < 930$ のとき, $score = \lfloor 288 - 22\sqrt{Q - 870} \rfloor$ となる。
- $Q < 880$ のとき, $score = min(2860 - 3Q, 300)$ となる。
入出力例1
例えば, 以下のような配置の場合、以下のような入出力が考えられる。ただし, この場合 $H = W = 4, N = 4$ なので, 実際のテストケースには存在しない。
H=4, W=4, N=4 1001 0000 0010 0100入出力として考えられる例
プログラムへの入力 | プログラムの出力 |
---|---|
4 4 4 1000000007 | |
? 0 0 0 1 | |
1 | |
? 0 1 0 2 | |
0 | |
? 0 3 1 3 | |
1 | |
? 2 1 3 2 | |
2 | |
? 2 2 2 2 | |
1 | |
! 9225 |
また, これらの情報で必ずしも盤面が把握できるとは限らず, エスパーをすることも許されはします。