
今天我在房間裡玩遊戲的時候,旁邊的百鬼あやめ突然湊過來,神秘地說:
「今天我們來玩一個字母遊戲吧!我會給你一串字母,你要把它切成兩段。切得好的人,就可以拿到獎勵!」
我皺著眉頭問:
「怎麼切才算好呢?」
她笑著解釋:
「很簡單,每段字串裡面不同的字母越多越好!你要找到一種切法,讓前半段和後半段不同字母的數量加起來最多。」
送你一點例子:
- 字串 "abc" → 可以切成 "a" 和 "bc",前段不同字母 1 個,後段 2 個,加起來 3。
- 字串 "bbbbb" → 不管怎麼切,前後段加起來最多 2(因為只有一種字母)。
- 字串 "babacaba" → 可能切成 "bab" 和 "acaba",前段不同字母 2 個,後段 3 個,加起來 5。
我心裡想:
「原來要找的,就是一種切法,讓兩段字串不同字母數量加總最大。」
第一行是一個整數 t(1 ≤ t ≤ 10⁴)—— 測試資料的組數。
接下來每組測試資料包含兩行:
第一行是一個整數 n(2 ≤ n ≤ 2 × 10⁵)—— 字串 s 的長度
第二行是一個字串 s,由小寫英文字母組成。
保證所有測試資料的字串長度總和不超過 2 × 10⁵。
對於每一筆測資輸出f(a) + f(b) 的最大值
5 2 aa 7 abcabcd 5 aaaaa 10 paiumoment 4 aazz
2 7 2 10 3
所有測試資料的字串長度總和不超過 2 × 10⁵。
記得在main裡面第一行加上
ios_base::sync_with_stdio(0),cin.tie(0),cout.tie(0);
50% n <= 100
100% 題目給的
| 編號 | 身分 | 題目 | 主題 | 人氣 | 發表日期 |
沒有發現任何「解題報告」 |
|||||