TopCoder

abcabcabc
有人要寫 p6 嗎 > <

User's AC Ratio

71.4% (5/7)

Submission's AC Ratio

8.9% (7/79)

Tags

Description

本題為 Two Steps 題,限用 C++ 作答。你可以在這裡找到範例實作以及範例評分程式,詳細注意事項以及常見問題請參考 Hints。

「不要再 GO 了!我不知道你們在說什麼!」最近,8e7 發現他身邊的人都在看 MyGO!!!!!,但是他沒看過,所以他一直看不懂大家傳的那些梗圖。什麼「那傢伙竟然敢無視燈」、「從來不覺得打歡樂團體賽開心過」、「為什麼要演奏線段樹」之類的,他毫無頭緒。反正,以下是他亂寫的題敘。

千早愛音認為,展現自我的方式應該要多元一點,所以她正在學習溝通的方式。有一天,她、波路特石、跟 8e7 在進行溝通練習。

首先,8e7 會先給愛音一個整數 $x$,其中 $0 \le x < 2 ^ {30} $ 。接下來,愛音會寫給波路特石一個由 GO 兩種字元組成的訊息。8e7 會攔截這個訊息,而因為 8e7 不喜歡 GO,因此他有可能會將訊息中的 GO 反轉變成 OG。具體來說,8e7 會做以下的操作至多 $k \le 3$ 次:

  • 選擇訊息中任意一個 GO 的子字串,並將他反轉成為 OG

接下來,波路特石會收到這個經過 8e7 修改的訊息,而他的目標就是要正確的解讀出 $x$ 的值。請幫助愛音和波路特石找到溝通的方法。

詳細細節與評分方式請見後續段落。

Implementation Details

本題請不要使用標準輸入輸出流,不過你仍然可以輸出除錯訊息至標準錯誤流(stderr)。

你的程式需要在一開始使用前置處理器引入 lib0927.h,詳細請參考範例實作。

你需要完成以下的三個函式,詳細執行流程請參考後面的內容:

void init();
  • 在一筆測試資料中,init 會被呼叫恰兩次。
  • 你可以在這裡進行一些初始化的流程。
std::string Anon(int x, int k);
  • 在一筆測試資料中,Anon 會被呼叫恰 $T$ 次。
  • 引數 $x$ 代表愛音在題目收到的數字。
  • 引數 $k$ 代表 8e7 至多會進行幾次交換操作。
  • 回傳值需為一個由 G, O 字元組成的字串,且字串長度不得超過 $120$。
int Baluteshih(std::string message, int k);
  • 在一筆測試資料中,Baluteshih 會被呼叫恰 $T$ 次。
  • 引數 message 是一個經過 Anon(x, k) 回傳的字串再經過 8e7 修改後的結果。
  • 引數 $k$ 代表 8e7 至多會進行幾次交換操作。
  • 回傳值需為一個介於 $0$ 到 $2^ {30} - 1$ 的整數,且需與 Anon(x, k) 傳入的 $x$ 相同。

如果任意一個條件沒有被滿足,你的程式會被判斷為 Wrong Answer 並且獲得 0 分,否則,你的程式將依照 Scoring 中的敘述評分。

評測系統會用以下執行的過程:

  • 執行參賽者的程式,先呼叫 init(),然後呼叫 $T$ 次 Anon(),每次呼叫的參數分別為 $x_1, x_2, \dots, x_T$,而對應的訊息為 $m_1, m_2, \dots, m_T$。
  • 對於每個 $m_i, 1 \le i \le T$,根據題目中的方式修改 $m_i$。
  • 重新執行參賽者的程式,先呼叫 init(),然後呼叫 $T$ 次 Baluteshih(),每次呼叫的參數為 $m_1, m_2, \dots, m_T$,而回傳的結果為 $y_1, y_2, \dots, y_T$。
  • 如果 $\forall 1 \le i \le T, x_i = y_i$,那麼答案正確。

Example

假設 $T = 2$,一個被判斷為 Accepted 的範例互動狀況如下:


評測程式端 參賽者程式端
系統第一次執行參賽者的程式。
呼叫 init()
呼叫 Anon(4, 3)
回傳 GOGO
呼叫 Anon(6, 3)
回傳 GOGOGO
系統將 GOGO 交換成 OOGG
系統將 GOGOGO 交換成 GOGOGO
系統第二次執行參賽者的程式。
呼叫 init()
呼叫 Baluteshih(OOGG, 3)
回傳 4
呼叫 Baluteshih(GOGOGO, 3)
回傳 6

Constraints

  • $1 \leq T \leq 10^ 5$
  • $0 \leq x < 2^ {30}$
  • $1 \leq k \leq 3$

Scoring

假設 $L$ 為該子題所有測資中,Anon 回傳的字串長度最大值。你的分數會是該子題的分數乘上倍數 $p$,其中

  • 如果 $L \leq 47$, $$p = 1$$
  • 如果 $47 < L \leq 60$, $$p = 0.75 + 0.02 \times (60 - L)$$
  • 如果 $60 < L \leq 120$, $$p = 0.15 + 0.01 \times (120 - L)$$
  • 否則, $$p = 0$$

Input Format

範例評分程式以下列方式輸入:

  • line $1$: $T$ $k$
  • line $2$: $x_1$ $x_2$ $\ldots$ $x_T$

其中 $x_i$ 為第 $i$ 次呼叫 Anon 的引數 $x$。

Output Format

範例評分程式以下列方式輸出:

如果你的程式被判斷為 Accepted,範例評分程式會輸出 Accepted: L,其中 LAnon 回傳的字串長度最大值。

如果你的程式被判斷為 Wrong Answer,範例評分程式會輸出 Wrong Answer: MSG,其中 MSG 以及其代表的意思為以下列表的其中一個:

  • Wrong charset: 回傳的字串包含 G, O 以外的字元。
  • Too long: 回傳的字串長度超過 $120$。
  • Not correct: 回傳的答案錯誤。

如果有多個原因,範例評分程式只會輸出任何一個。

請注意,範例評分程式的評測方法與實際評分程式不同,實際評測系統會用在 Implementation Details 欄位敘述的方法執行。

另外,範例評分程式會將交換的過程好好的輸出,請好好運用。

Sample Input 1

2 3
4 6

Sample Output 1


        

Hints

由於 Windows Defender 以及各種奇怪東西的限制,本題的範例編譯指令不提供 Windows 批次檔。編譯及測試教學請參考下列說明。

  • 如果你的系統是 Linux,你可以直接執行 compile.sh 編譯你的程式,編譯結果會是 nogo.exe,請直接用命令列執行該檔案。
  • 如果你的系統是 MacOS,你需要將 compile.sh 當中的 -static 參數移除,其餘與 Linux 相同。
  • 如果你的系統是 Windows,你有以下的選擇:
    1. 本地測試時加入 #include "grader.cpp",並且以單一檔案的編譯執行方式測試,請注意這一行上傳時需要刪除,否則你會獲得一個 Compile Error。
    2. 將 compile.sh 的變數替換後直接於命令列執行,請注意你需要確保 g++ 在系統的環境變數 PATH 中。
    3. 如果你的電腦已經有 WSL (Windows Subsystem for Linux),你可以直接使用 WSL 並按照 Linux 的做法。
    4. 使用電腦教室的 Ubuntu(啟動時可以選擇系統)並按照 Linux 的做法。

Problem Source

IOICamp 2025 Day5 pD

Subtasks

No. Testdata Range Constraints Score
1 0 範例測資 0
2 1~14 $k=1$ 25
3 0~31 無額外限制 75

Testdata and Limits

No. Time Limit (ms) Memory Limit (VSS, KiB) Output Limit (KiB) Subtasks
0 6000 1048576 65536 1 3
1 6000 1048576 65536 2 3
2 6000 1048576 65536 2 3
3 6000 1048576 65536 2 3
4 6000 1048576 65536 2 3
5 6000 1048576 65536 2 3
6 6000 1048576 65536 2 3
7 6000 1048576 65536 2 3
8 6000 1048576 65536 2 3
9 6000 1048576 65536 2 3
10 6000 1048576 65536 2 3
11 6000 1048576 65536 2 3
12 6000 1048576 65536 2 3
13 6000 1048576 65536 2 3
14 6000 1048576 65536 2 3
15 6000 1048576 65536 3
16 6000 1048576 65536 3
17 6000 1048576 65536 3
18 6000 1048576 65536 3
19 6000 1048576 65536 3
20 6000 1048576 65536 3
21 6000 1048576 65536 3
22 6000 1048576 65536 3
23 6000 1048576 65536 3
24 6000 1048576 65536 3
25 6000 1048576 65536 3
26 6000 1048576 65536 3
27 6000 1048576 65536 3
28 6000 1048576 65536 3
29 6000 1048576 65536 3
30 6000 1048576 65536 3
31 6000 1048576 65536 3