Universal Cup Judging System

Universal Cup

Time Limit: 2.0 s Memory Limit: 2048 MB Total points: 100 Difficulty: [show] Communication
Statistics

呢題係一道多階段(multi-pass)交互題。記得喺每次輸出之後刷新輸出緩衝區。你可以使用以下方式刷新輸出:

  • 喺 C/C++ 入面使用 fflush(stdout) 或者 cout.flush();
  • 喺 Java 同 Kotlin 入面使用 System.out.flush();
  • 喺 Python 入面使用 sys.stdout.flush()。

problem_16338_7c39b7d3e38a4987d11a56c649025d90.png
由 ChatGPT 繪製嘅遊戲概念圖。

喺經典嘅在線匹配(online matching)遊戲入面,一張圖嘅邊會逐條顯示出嚟。每當顯示一條邊嗰陣,你必須即刻而且不可撤回咁決定係咪將佢加入你嘅匹配入面。你嘅目標係確保任意兩條被選中嘅邊都唔會共享同一個頂點,同時最大化所選邊嘅總數。

你係一位渴望成名、雄心勃勃嘅電腦科學家。正如你所深知,喺在線環境下搵出最大匹配喺高概率意義下係被證明咗唔可能嘅——就算係二分圖呢類最簡單嘅圖類都係一樣。然而,喺其他人睇到根本障礙嘅地方,你睇到咗通往榮耀嘅機會。今日,你宣稱已經攻克咗樹上嘅長期公開難題,並準備好向全世界公佈你突破性嘅演算法。

但係有一個問題:尋日你喺自己嘅證明入面發現咗一個漏洞,而且到而家都仲未知點樣修補。唔甘心放棄聚光燈嘅你,決定將呢場演示變成一場魔術表演——你隱藏喺後台嘅助手,會喺遊戲開始之前傳送少少關於成棵有 $n$ 個頂點嘅樹嘅提示畀你。

你原本嘅計劃好簡單:叫助手直接將每條邊查詢嘅答案傳送過嚟。為此,你安裝咗一個秘密耳機,能夠接收一條長度恰好為 $(n - 1)$ 嘅二進制字串。但係現場觀眾對你嘅「突破」抱持懷疑態度。為咗防止任何預先安排好嘅造假,佢哋要求所有邊必須以均勻隨機嘅順序呈現——呢個順序無論係你定係你嘅助手都無法預測或控制。

舞台已經搭好,聚光燈正照住你。而家,喺唔改變通訊頻道嘅情況下,證明你嘅宣稱啦。

交互協議

你嘅程序喺每個測試點上面會被執行兩次。喺 prepare 階段,你嘅程序將扮演助手。喺 play 階段,你嘅程序將扮演你(魔術師)。喺呢兩個階段入面,你嘅程序都會作為交互程序進行評測。

準備階段(Prepare Round)

輸入嘅第一行包含單詞 prepare。第二行包含一個整數 $n$($2 \le n \le 500$)——表示頂點嘅數量。接住落嚟嘅 $(n - 1)$ 行,每行包含兩個整數 $u$ 同 $v$($1 \le u, v \le n$,$u < v$),表示樹入面連接 $u$ 同 $v$ 嘅一條無向邊。

你必須輸出一行,包含一個長度恰好為 $(n - 1)$、只由字符 0 同 1 組成嘅二進制字串 $s$。呢個就係傳送去第二個階段(play 階段)嘅字串。如果你嘅輸出唔符合要求嘅格式,你將會獲得 Wrong Answer 結果。

表演階段(Play Round)

你嘅程序將會為 play 階段重新啟動。

第一行包含單詞 play。第二行包含整數 $n$。第三行包含二進制字串 $s$,同你喺 prepare 階段輸出嘅完全一致。

之後,遊戲開始,共有 $(n - 1)$ 個回合。喺每個回合入面,輸入會提供一行,包含兩個整數 $u$ 同 $v$($1 \le u, v \le n$,$u < v$)。作為回應,你應該輸出一行,包含 take 或者 ignore。第一階段入面嘅所有邊都會恰好出現一次,而且邊嘅出現順序係由 $(n - 1)!$ 種可能嘅排列入面均勻隨機揀出嚟嘅。

一旦出現格式無效嘅輸出,遊戲會即刻結束,交互器唔會再提供任何後續資訊。

正確性評測

設 $M$ 為你嘅程序所揀嘅邊嘅集合。如果冇任何頂點與超過一條被選中嘅邊相連,而且 $|M| = |M^*|$(其中 $M^*$ 係該圖嘅最大匹配),則視為可接受。

除咗範例測試之外,恰好有 $50$ 個測試點。為咗通過本題,你嘅程序必須喺包括範例測試在內嘅所有測試點上表現正確。

保證所有隨機打亂順序喺收到程序輸出之前就已經固定。每個測試點嘅隨機性都係固定嘅,透過固定偽隨機數生成器嘅種子嚟實現。

題目提供咗測試工具,以協助你開發同測試你嘅程序。

範例

範例 1,階段 1

輸入
prepare
3
1 2
1 3
輸出
00

範例 1,階段 2

輸入
play
3
00
1 3

1 2
輸出
take

ignore

範例 1 說明

由於 $|M^*| = 1$,揀任意一條邊都係可接受嘅,因此提示字串可以係任意嘅。

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.