Xóa ký tự kề

Đề bài

Mô tả

Cho một xâu s gồm các chữ cái Latin thường. Gọi độ dài của s|s|. Bạn được thực hiện một số thao tác trên xâu này.

Trong một thao tác, bạn chọn một vị trí i và xóa ký tự thứ i của s (ký tự si) nếu ít nhất một trong hai ký tự kề với nó là chữ cái liền trước của si trong bảng chữ cái. Chữ cái liền trước của ba, của sr, còn chữ cái a không có chữ cái liền trước. Sau mỗi lần xóa, độ dài xâu giảm đi một.

Hai ký tự kề với sisi1si+1. Ký tự đầu tiên và ký tự cuối cùng của xâu chỉ có một ký tự kề (trừ khi |s|=1).

Hãy tìm số ký tự nhiều nhất có thể xóa được nếu chọn thứ tự các thao tác một cách tối ưu.

Dữ liệu vào

  • Dòng đầu chứa số nguyên |s| (1|s|100) là độ dài của xâu.
  • Dòng thứ hai chứa xâu s gồm |s| chữ cái Latin thường.

Dữ liệu ra

In ra một số nguyên là số ký tự nhiều nhất có thể xóa được.

Ràng buộc

  • 1|s|100
  • s chỉ gồm các chữ cái Latin thường.

Ví dụ

Input Output Giải thích
8
bacabcab
4 Một cách xóa: xóa s1=b (vì s2=a) được acabcab; xóa chữ c (vì kề b) được acabab; xóa chữ b (vì kề a) được acaba; xóa b còn lại được acaa. Không thể xóa thêm, tổng cộng xóa 4 ký tự.
4
bcda
3 Xóa d (kề c) được bca; xóa c (kề b) được ba; xóa b (kề a) được a. Xóa được 3 ký tự.
6
abbbbb
5 Lần lượt xóa từng chữ b vì luôn có một chữ a kề bên, còn lại đúng một chữ a.

Bình luận

Không có bình luận tại thời điểm này.

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.46 awk 1.3.4 gcc 16.1.0 csc 6.12.0.200 g++ 16.1.0 g++-themis 16.1.0 g++17 16.1.0 g++20 16.1.0 g++23 16.1.0 clang++ 22.1.6 dmd 2.112.0 dart 3.12.1 gforth 0.7.3 gfortran 12.2.0 go 1.26.3 groovyc 5.0.6 javac 25.0.3 node 26.2.0 kotlinc 2.3.21 sbcl 2.2.9 lua 5.4.8 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.6 pike 8.0 pypy3 7.3.23 python3 3.14.5 racket 8.7 ruby 4.0.5 rustc 1.96.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 tclsh 8.6 bun 1.3.14 deno 2.8.1 v 0.5.1 zig 0.16.0