JOI 2021 - Pancake
Xem PDFBitaro làm việc tại một cửa hàng bánh pancake. Món được yêu thích nhất là tháp gồm \(N\) chiếc bánh pancake xếp chồng lên nhau. Cửa hàng có ba hương vị bánh, được ký hiệu là A, B, C.
Một tháp bánh được gọi là tháp bánh tốt nếu cách xếp bánh thỏa mãn tất cả các điều kiện sau:
- Với mọi cặp bánh vị
Avà bánh vịB, bánh vịAnằm phía trên bánh vịB. - Với mọi cặp bánh vị
Avà bánh vịC, bánh vịAnằm phía trên bánh vịC. - Với mọi cặp bánh vị
Bvà bánh vịC, bánh vịBnằm phía trên bánh vịC.
Ví dụ, các tháp có hương vị từ trên xuống lần lượt là AABBBC, ACC, BBBB đều là tháp bánh tốt; các tháp AABABCC, CA thì không.
Bitaro phụ trách bày bánh và có thể thực hiện thao tác sau:
Thao tác \(k\) (\(2 \le k \le N\)): luồn xẻng lật bánh xuống dưới chiếc bánh thứ \(k\) tính từ trên xuống rồi lật ngược phần bánh phía trên xẻng. Nói cách khác, đảo ngược thứ tự của \(k\) chiếc bánh trên cùng.
Chẳng hạn, với tháp có hương vị từ trên xuống là ABCB, nếu thực hiện riêng từng thao tác \(2\), \(3\), \(4\) trên tháp ban đầu thì lần lượt thu được BACB, CBAB, BCBA.
Hiện có \(Q\) đĩa tháp bánh. Đĩa thứ \(i\) (\(1 \le i \le Q\)) có các hương vị từ trên xuống là \(S_{i,1}S_{i,2}\ldots S_{i,N}\). Bitaro muốn biến từng tháp thành tháp bánh tốt với số thao tác ít nhất có thể.
Cho thông tin về \(Q\) tháp bánh, hãy viết chương trình tìm số thao tác ít nhất cần thực hiện cho mỗi tháp.
Dữ liệu vào
Dòng thứ nhất chứa hai số nguyên \(N, Q\).
Trong \(Q\) dòng tiếp theo, dòng thứ \(i\) chứa xâu \(S_i\) có độ dài \(N\), trong đó ký tự thứ \(j\) là \(S_{i,j}\), mô tả hương vị từ trên xuống của tháp bánh thứ \(i\).
Dữ liệu ra
In ra \(Q\) dòng. Dòng thứ \(i\) (\(1 \le i \le Q\)) chứa số thao tác ít nhất cần thực hiện để biến tháp bánh thứ \(i\) thành tháp bánh tốt.
Ràng buộc
- \(2 \le N \le 13\).
- \(1 \le Q \le 100\,000\).
- \(S_{i,j}\) là
A,BhoặcCvới mọi \(1 \le i \le Q\), \(1 \le j \le N\).
Phân nhóm
Mọi phân nhóm đều thỏa mãn các ràng buộc chung ở trên.
- (4 điểm) \(N \le 5\), \(Q=1\).
- (10 điểm) \(N \le 5\).
- (60 điểm) \(Q=1\).
- (26 điểm) Không có ràng buộc bổ sung.
Ví dụ
Ví dụ 1
Input
5 3
ABCBA
CCBAB
AAAAA
Output
3
2
0
Giải thích
Với tháp bánh thứ nhất, có thể tạo thành tháp bánh tốt bằng ba thao tác sau:
- Thực hiện thao tác \(4\), thu được
BCBAA. - Thực hiện thao tác \(2\), thu được
CBBAA. - Thực hiện thao tác \(5\), thu được
AABBC.
Không thể tạo thành tháp bánh tốt bằng từ \(2\) thao tác trở xuống, nên dòng thứ nhất in ra \(3\).
Với tháp bánh thứ hai, có thể tạo thành tháp bánh tốt bằng hai thao tác sau:
- Thực hiện thao tác \(5\), thu được
BABCC. - Thực hiện thao tác \(2\), thu được
ABBCC.
Không thể tạo thành tháp bánh tốt bằng từ \(1\) thao tác trở xuống, nên dòng thứ hai in ra \(2\).
Tháp bánh thứ ba đã là tháp bánh tốt, không cần thực hiện thao tác nào, nên dòng thứ ba in ra \(0\).
Ví dụ 2
Input
2 5
AC
AC
AC
AC
AC
Output
0
0
0
0
0
Giải thích
Có thể có nhiều tháp bánh được xếp giống hệt nhau.
Ví dụ 3
Input
13 1
ABCCABCBACBAA
Output
9
Ví dụ 4
Input
13 4
CCAAACBAAAABB
BBBCCBCCCBCBC
CCCAAAABBBBBB
AABCBCACBACBA
Output
4
6
2
10
Nguồn
Bản dịch tiếng Việt từ đề gốc tiếng Nhật của Ủy ban Olympic Tin học Nhật Bản. Đề gốc và bản dịch được cung cấp theo giấy phép CC BY-SA 4.0.
Kỳ thi:
- JOI 2021 - Vòng loại 2 (13 Tháng 12., 2020)
Bình luận