#P450. 遞增子字串

遞增子字串

題目描述

你的朋友小濠在數學堂學了有關於字串的性質。

小濠學用了長度 L 的字串 C 含有大寫英文字母是嚴格單調遞增,如果每對英文字母的 index i 和 j (1 ≤ i < j ≤ L ( index 由 1 開始 ) ),在位置 i 的英文字比在位置 j 的英文字的位置前。

例如,字串 ABC 和 ADF 就是嚴格單調遞增,字串 AAB 和 FDA 就不是。

現在小濠教會了你這個性質,小濠打算挑戰你:已知長度為 N 字串 S,你要找出在每個位置 1 ≤ i ≤ N,最長的嚴格單調遞增的子字串在位置 i 結束是多長?

輸入格式

輸入的第一行有一個整數T,T是測試數據組數 (1 ≤ T ≤ 100)

每個測試數據有2行

第一行含有一個整數N,N是字串的長度 (1 ≤ N ≤ 200000)

第二行含有長度為N的字串S,由大寫英文字母組成。

輸出格式

每個測試數據,輸出一行含有 Case #x: y1 y2 ...yn,x是測試數據的編號(從1開始),yi是嚴格單調遞增子字串最長長度結束於位置 i 。

Samples

2
4
ABBC
6
ABACDA
Case #1: 1 2 1 2
Case #2: 1 2 1 2 3 1

提示

在Case #1中,最長嚴格單調遞增子字串在位置 1 結束是 A 。最長嚴格單調遞增子字串在位置 2,3 和 4 結束分別是 AB,B 和 BC 。

在Case #2中,最長嚴格單調遞增子字串在每個位置結束的是 A,AB,A,AC,ACD 和 A。

原始資料

  • Zero1 題號:a450
  • Hydro 題號:Z0450
  • Locale:zh_MO
  • Display:practice