trang chủ / bài tập / forbpair

Cặp chữ cái cấm

Đề bài

Mô tả

Cho một xâu s gồm các chữ cái Latin in thường. Người ta định nghĩa k cặp chữ cái cấm, mỗi cặp gồm hai chữ cái khác nhau. Một xâu được coi là hợp lệ nếu không có hai chữ cái thuộc cùng một cặp cấm đứng cạnh nhau (cặp cấm không có thứ tự — nếu ab là cặp cấm thì cả "ab" lẫn "ba" đều bị cấm).

Mỗi chữ cái xuất hiện trong không quá một cặp cấm.

Bạn được phép xóa các chữ cái trong s; sau khi xóa, các chữ còn lại ghép sát nhau theo thứ tự cũ. Hãy tìm số chữ cái ít nhất cần xóa để xâu thu được không chứa hai chữ cái cùng một cặp cấm đứng cạnh nhau.

Dữ liệu vào

  • Dòng đầu chứa xâu s gồm các chữ cái Latin in thường, 1|s|105.
  • Dòng thứ hai chứa số nguyên k (0k13) — số cặp chữ cái cấm.
  • k dòng tiếp theo, mỗi dòng chứa đúng hai chữ cái Latin in thường khác nhau (không có dấu cách ở giữa) mô tả một cặp cấm. Mỗi chữ cái xuất hiện trong không quá một cặp.

Dữ liệu ra

In ra một số nguyên duy nhất — số chữ cái ít nhất cần xóa khỏi s.

Ràng buộc

  • 1|s|105
  • 0k13
  • Mỗi chữ cái xuất hiện trong không quá một cặp cấm.

Ví dụ

Input Output Giải thích
ababa
1
ab
2 Cặp cấm là {a,b}. Xâu "ababa" có 3 chữ a và 2 chữ b đan xen — cần xóa cả 2 chữ b để còn lại "aaa".
codeforces
2
do
cs
1 Chỉ có "do" trong "codoeforces" gây xung đột — xóa chữ o thứ hai (hoặc chữ d) là đủ. Cặp {c,s} không xuất hiện kề nhau nên không ảnh hưởng.

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