EOJ Monthly 2020.7 A. 打字機(字首和+思維)
阿新 • • 發佈:2020-07-18
Cuber QQ 長期在網路上與他人對線,一天,他發明了一臺神奇的打字機。這臺打字機只能處理由 a,b,X 構成的字串。具體來說,打字機能夠執行如下三種操作。 • 操作1:將任意一個 X 替換為 aX 。 • 操作2:將任意一個 X 替換為 aXbX 。 • 操作3:刪除任意一個 X 。 打字機啟動時,螢幕上有且僅有一個 X 。 現在 Cuber QQ 想要打出一個僅包含 a , b 的字串 s 。但是他有選擇困難症,注意到,操作 1 和操作 2 都能生成字元 a 。如果 s 中的某個 a 既可以通過操作 1 得到,又可以通過操作 2 得到,Cuber QQ 就會因為難以抉擇而不快樂。 Cuber QQ 為了向你詳細說明這一點,他決定把操作 1 生成的 a 標記為 a1 ,把操作 2 生成的 a 標記為 a2 。在這種表示下,Cuber QQ 是否快樂等價於通過各種操作方式(如果存在)生成的字串 s 是否完全一樣。 現在 Cuber QQ 把這個字串 s 告訴你,請你告訴他,他是否能成功打出這個字串,如果能夠打出這個字串,你還要告訴他,他是否快樂。 輸入格式 本題有多組測試資料,第一行包含一個整數 T (1≤T≤105) 之後 T 行,每行是一個僅包含 a , b 的字串 s (1≤|s|≤106) 資料保證所有字串的長度之和 ∑|s|≤106 。 輸出格式 輸出 T 行,分別對應每組資料。 如果Cuber QQ可以打出這個字串,並且開心,輸出 Happy Fang。 如果Cuber QQ可以打出這個字串,但不開心,輸出 Sad Fang。 如果Cuber QQ無法打出這個字串,輸出 Dead Fang。 通過觀察可以知道,對於aXbX可以把aX插在中間得到aaXbX,進而得到a2a1b,也可把aXbX插在aX中並刪去X得到a1a2b,因此a的數量和b的數量完全相等的串才會讓其開心,然後我們可以在這個全由2操作生成的串的後面新增aX,不改變其開心與否。因此在最後一個出現b的位置判斷a和b的字首和是否相等就能判斷是否開心。同時,如果某個位置b的字首和大於a的字首和,這個字串無法打出,剩下的情況都是可以打出但不開心。 具體證明還是看官方題解吧…