Universal Cup Judging System

Universal Cup

Time Limit: 2.0 s Memory Limit: 1024 MB Total points: 100 Interactive
Statistics

KUPC-kunは、以下の問題を解くプログラムを作成しました。

$N$ 頂点を持つ木 $T = (V, E)$ が与えられます。 長さ $k$ の頂点列 $\{a_1, \dots, a_k\}$ に対して、そのスコアを以下のように定義します。

  • $d(u, v)$ を木 $T$ における頂点 $u$ と $v$ の間のパスの辺の数とします。このとき、スコアは $\prod_{i=1}^{k} d(a_i, a_{(i \bmod k)+1})$ です。

$V$ の部分集合 $S$ が与えられます。各 $1 \le k \le N$ について、以下の値 $q_k$ を求めてください。

  • 要素が $S$ に属する長さ $k$ のすべての頂点列 $\{a_1, \dots, a_k\}$ についてのスコアの総和。ただし、$2^{61} - 1$ を法とします。

KUPC-kunは木 $T$ の情報をあらかじめ秘密裏に保持しており、プログラムに与えられる木として $T$ を使用し続けます。

あなたは、上記のプログラムを使用して、木 $T$ の葉の情報を復元しようとしています。木の頂点数を $N$ とするとき、以下の質問を最大 $N$ 回まで行うことができます。

  • $V$ の部分集合 $S$ を選び、プログラムの出力を問い合わせる。

KUPC-kunのプログラムが正しいと仮定して、質問を通じて得られた情報から木 $T$ に含まれるすべての葉を特定してください。 ジャッジは適応的ではなく、木 $T$ はインタラクション開始前に固定されています。

インタラクション

まず、標準入力から $N$ が与えられます。$(2 \le N \le 50)$

各質問について、以下の形式で標準出力に出力してください。

? s1s2 · · · sN

ここで、$s_1s_2 \dots s_N$ は部分集合 $S$ を表す長さ $N$ の文字列であり、$i \in S$ ならば $s_i = 1$、$i \notin S$ ならば $s_i = 0$ です。

これに対する応答として、標準入力から以下が与えられます。

q1 q2 · · · qN

すべての葉を特定したら、以下の形式で回答を出力してください。

! t1t2 · · · tN

ここで、$t_1t_2 \dots t_N$ は長さ $N$ の文字列であり、$i$ が葉ならば $t_i = 1$、葉でないならば $t_i = 0$ です。

この出力の後、直ちにプログラムを終了してください。

何かを出力するたびに、末尾に改行を出力し、標準出力をフラッシュしてください。

入出力例

入力 1

5
0 8 0 32 0
0 44 108 968 3960
0 0 0 0 0
0 76 348 3336 22200

出力 1

? 00101
? 11001
? 10000
? 11111
! 11001

注記

最初の例において、ジャッジが秘密裏に保持している木の辺集合は $(1, 3), (2, 3), (3, 4), (4, 5)$ です。 最初の質問では、$S = \{3, 5\}$ です。 $d(3, 3) = 0, d(3, 5) = d(5, 3) = 2, d(5, 5) = 0$ であることに注意してください。

例えば、要素が $S$ に属する長さ 2 の頂点列 $a$ は以下の 4 通りあります。

  • $a = (3, 3)$ のとき、この列のスコアは $d(3, 3) \times d(3, 3) = 0 \times 0 = 0$
  • $a = (3, 5)$ のとき、この列のスコアは $d(3, 5) \times d(5, 3) = 2 \times 2 = 4$
  • $a = (5, 3)$ のとき、この列のスコアは $d(5, 3) \times d(3, 5) = 2 \times 2 = 4$
  • $a = (5, 5)$ のとき、この列のスコアは $d(5, 5) \times d(5, 5) = 0 \times 0 = 0$

ジャッジは $q_2$ に対して $8$ を返します。これは $0 + 4 + 4 + 0$ を $2^{61} - 1$ で割った余りです。 他の列の長さについても同様に計算することで、ジャッジの応答 0 8 0 32 0 が得られます。 この木の葉は頂点 1, 2, 5 であり、! 11001 と出力することで葉の特定が正しく完了します。

Editorials

IDTypeStatusTitlePosted ByLast UpdatedActions
#1529EditorialOpen题解jiangly2026-04-15 16:04:40View

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.