Xoá hai ký tự

Xem PDF



Tác giả:
Dạng bài
Ngôn ngữ cho phép
Assembly, Awk, C, C#, C++, Clang, Cobol, D, Groovy, Haskell, JS, Java, Kotlin, Lua, Node JS, OCaml, ObjectiveC, Output, PHP, Pascal, Perl, Prolog, Pypy, Pypy 3, Python, Ruby, Rust, Scala, Scratch, Swift
Điểm: 1100 (p) Thời gian: 1.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Tade có một xâu \(s\) bao gồm các chữ cái Latinh viết thường. Anh ấy quyết định xóa hai ký tự liên tiếp khỏi xâu \(s\) và thắc mắc có bao nhiêu xâu khác nhau có thể nhận được sau thao tác đó.

Ví dụ, Tade có xâu aaabcc. Tade có thể nhận được các xâu khác nhau sau: abcc (bằng cách xóa hai ký tự đầu tiên hoặc ký tự thứ hai và thứ ba), aacc (bằng cách xóa ký tự thứ ba và thứ tư), aaac (bằng cách xóa ký tự thứ tư và thứ năm) và aaab (bằng cách xóa hai ký tự cuối cùng).

Input

  • Dòng đầu tiên chứa một số nguyên \(t\) (\(1 \le t \le 10^4\)) — số lượng bộ test.
  • Các dòng tiếp theo mô tả các bộ test:
    • Dòng đầu tiên của mỗi bộ test chứa một số nguyên \(n\) (\(3 \le n \le 2 \cdot 10^5\)).
    • Dòng thứ hai của mỗi bộ test chứa một xâu \(s\) có độ dài \(n\) bao gồm các chữ cái Latinh viết thường.
  • Đảm bảo rằng tổng của \(n\) trên tất cả các bộ test không vượt quá \(2 \cdot 10^5\).

Output

  • Với mỗi bộ test, in ra một số nguyên duy nhất — số lượng xâu phân biệt có thể nhận được bằng cách xóa hai chữ cái liên tiếp.

Scoring

  • Subtask \(1\) \((10\%)\): \(n \le 10\).
  • Subtask \(2\) \((10\%)\): Hai ký tự liên tiếp luôn bằng nhau.
  • Subtask \(3\) \((30\%)\): Các ký tự ở vị trí lẻ luôn bằng nhau.
  • Subtask \(4\) \((50\%)\): Không có ràng buộc gì thêm.

Example

Test 1

Input
7
6
aaabcc
10
aaaaaaaaaa
6
abcdef
7
abacaba
6
cccfff
4
abba
5
ababa
Output
4
1
5
3
3
3
1
Note
  • Ví dụ đầu tiên đã được giải thích trong phần mô tả đề bài.
  • Trong ví dụ thứ ba, các xâu sau đây được tạo ra: cdef, adef, abef, abcf, abcd.
  • Trong ví dụ thứ bảy, bất kỳ thao tác xóa nào cũng sẽ dẫn đến xâu aba.

Bình luận

Mới nhất
Tải bình luận...

Không có bình luận nào.