atcoder#S8PC4H. Huge Kingdom: Atcoder
Huge Kingdom: Atcoder
题目描述
この問題はマラソン問題です。 writer解が必ずしも満点であるとは限りません。できるだけ良い点数を取りましょう。 配点: 点
Atcoder王国は、個の街と個の道から成り立っています。
また、その王国は連結であります。つまり「木」です。
あなたは、その王国の構造を当てなければなりません。
ここでいう構造というのは、それぞれの道がどの番号の街とどの番号の街をつないでいるのか、という事です。
さて、あなたは構造を当てるにおいて、以下のような質問ができます。
- 文字列(文字)を出力する。その時、=1の時、番目の街を黒く塗り、=0の時、番目の街を白く塗ることを意味する。
- 頂点のグラフを考える。
- 王国の道の両端の街が、両方とも黒く塗られている場合、グラフにその辺を追加する。
- グラフの各連結成分についての、「木の直径」を2乗した値の総和が返される。
例えば、以下のような構造で、S="11001111"の場合、以下のような値が返ってくる。
その時、できるだけ少ない質問回数で王国の構造を当てなさい。
Input & Output Format
これはリアクティブ問題である。
最初、以下のように入力される。
- 1行に、Atcoder王国の街の個数が与えられる。
次に、あなたは以下の様な質問をすることができる。
質問は、以下のような形式ですることができる。
?
は、質問する文字列(=街の塗り方)である。は文字でなければならない。
また、質問は、以下のように返される。
質問で出力された文字列について、問題文で与えられた作り方でグラフを作る。
グラフの各連結成分についての、「木の直径」を2乗した値の総和が返される。
最後に、あなたは以下のような出力をしなければならない。 > ! …
それは、Atcoder王国の構造を突き止めたことを示す。
は、街と街を直接つなぐ道があることを示す。
ただし、出力する道の順番はどのようなものでも良い。また、それぞれの道を出力する方法は2通りあるが、【(1,2),(2,1)など】その出力の順番もどれでもよい。
N=4
0 1
1 2
1 3
提示
制約
- =
- Atcoder王国には本の道があり、連結である
- Atcoder王国の街の番号は以上以下である。(0-based)
- ケースはランダムに作られた。
テストケースの生成方法
以下の操作を、街が全て連結(連結成分が1つ)になるまで繰り返す。
- ランダムな街の番号, を選ぶ。
- もし、今の状態で街から街まで、いくつかの道路を使ってたどり着けない場合、街との間に道路を結ぶ。
- そうでない場合、何もしない。最初の操作に戻る。
得点
あなたが質問した回数をとする。その時得点の理論値は以下のようになる。
- の時、点
- $ 18000 $5000
- $ 4000 $2000
- $ 1200 $700
- の時、点
ケースは5個あるので、得点は理論値をで割った値になる。
Sample Explanation 1
このケースは、である。実際のケースではそのようなものは存在しない。(制約を満たしていないため) 以下、やりとりの例である。 プログラムへの入力 プログラムの出力 4 ? 1111 4 ? 1101 4 ? 1001 0 ? 1100 1 ? 1011 0 ! (0,1) (1,2) (1,3) その王国は、以下の図のような構造をしています。 ![](https://atcoder.jp/img/s8pc-4/8d26e2d0a3fd5e4cc24efe8d21296341.png) ただし, 必ずしも意味のある質問をしているとは限らない。 また, これらの情報で必ずしも盤面が把握できるとは限らず, エスパーをすることも許されます。