a079: C. 字典問題
標籤 : 2018國中組初賽
通過比率 : 0人/1人 ( 0% ) [非即時]
評分方式:
Strictly

最近更新 : 2023-08-04 12:17

內容

2018 網際網路程式設計全國大賽 國中組初賽

殿壬是個天才兒童,他在一個月大的時候就學會數數、六個月大的時候就學會乘法跟除法、一歲時學會寫程式,而現在要講的,是殿壬九個月大的時候所思考的一個問題。

小時候(一個月大的時候),殿壬總是計算一串數字當中有幾個「洞」來練習數數。現在

(九個月大),殿壬把這項目標轉移到了小寫英文字⺟上面。

所謂的「洞」,指的是把一串小寫英文字⺟用指定的字體寫下來之後,會有幾個區域被字⺟ 圍住。

殿壬所使用的字體如下(以 pdf 版為準): abcdefghijklmnopqrstuvwxyz

可以看出a、b、d、e、o、p、q這 7 個英文字⺟有 1 個洞,而g這個英文字⺟有 2 個洞,其餘的 18 個英文字⺟都沒有洞。

對於一個由小寫英文字⺟組成的字串,只要把每個字⺟有幾個洞相加起來,就可以得到整個字串有幾個洞了。舉例來說,abc有 2 個洞,而ppap有 4 個洞。

現在,殿壬想要把所有⻑度為 N 且恰有 K 個洞的小寫英文字串找出來;不過,殿壬非常討厭g這個英文字⺟(原因不明),所以所有包含字⺟g的字串都不會被列入。

殿壬會把滿足上述條件的字串通通列出來並且按照字典順序排序。所謂的字典順序,就是從第一個字⺟開始比較兩個字串,若兩個字串的第一個字⺟不同,那麼第一個字⺟比較小的字串字典順序就比較小;若兩個字串的第一個字⺟相同,那麼就接續比較第二個字⺟、第三個字

⺟等,直到兩個字串在該字⺟相異而比較出字典順序為止。

舉例來說,當 N 為 5、K 為 2 時,滿足條件的字串就有bdyiu、xyzaa、abyss等,按照字典順序排序之後,會依序得到aaccc、aaccf、...、zzzqp、zzzqq。

在給定 N K 之後,給你一個有被列出來的字串 S,請問在剛剛列出的字串當中,S 的下一個字串是什麼?若該字串不存在,則輸出-1。

以第一筆範例測試資料為例,在上面列出的 N = 5,K = 2 的字串當中,aaccc的下一個字串是aaccf、zzzqp的下一個字串是zzzqq,而zzzqq沒有下一個字串。

輸入說明

本題的輸入當中包含多筆測試資料。

輸入的第一行有一個正整數 T,代表有幾筆測試資料。

每筆測試資料共有兩行。第一行包含兩個正整數 N,K,表示殿壬列出的是由g以外的小寫英文字⺟組成⻑度為 N 且恰有 K 個洞的字串。第二行包含一個被殿壬列出的字串 S

• 1 ≤ T ≤ 2 ×5 105 • 1 ≤ N ≤ 10 • 0 ≤ K N

  • S 的⻑度恰為 N
  • S 為由小寫英文字⺟組成的字串,且 S 不包含字⺟g
  • S 當中恰有 K 個洞
  • 一次輸入當中,T 筆測試資料的 N 加總不超過 106
輸出說明

對於每筆測試資料,輸出一行,若 S 的下一個字串存在,則輸出該字串;否則,請輸出

-1。

範例輸入
3
5 2
aaccc
5 2
zzzqp
5 2
zzzqq
範例輸出
aaccf
zzzqq
-1
測資資訊:
記憶體限制: 512 MB
公開 測資點#0 (8%): 1.0s , <1M
公開 測資點#1 (8%): 1.0s , <1M
公開 測資點#2 (8%): 1.0s , <10M
公開 測資點#3 (8%): 1.0s , <10M
公開 測資點#4 (8%): 1.0s , <10M
公開 測資點#5 (8%): 1.0s , <10M
公開 測資點#6 (8%): 1.0s , <10M
公開 測資點#7 (8%): 1.0s , <10M
公開 測資點#8 (9%): 1.0s , <10M
公開 測資點#9 (9%): 1.0s , <10M
公開 測資點#10 (9%): 1.0s , <1M
公開 測資點#11 (9%): 1.0s , <10M
提示 :
標籤:
2018國中組初賽
出處:
NPSC [管理者:
zero (管理員)
]


編號 身分 題目 主題 人氣 發表日期
沒有發現任何「解題報告」