Ghét xâu con

Đề bài

Mô tả

Cho một xâu nhị phân s (chỉ gồm các ký tự 01). Trong một thao tác, bạn chọn một vị trí trong xâu và lật ký tự tại vị trí đó (0 thành 1 hoặc 1 thành 0).

Một xâu được gọi là đẹp nếu nó không chứa xâu con (subsequence) 010 và cũng không chứa xâu con 101. Ở đây "xâu con" hiểu theo nghĩa subsequence: thu được bằng cách xoá đi một số (có thể là 0) ký tự, các ký tự còn lại giữ nguyên thứ tự.

Với mỗi test, hãy tính số thao tác ít nhất cần thực hiện để biến s thành một xâu đẹp.

Có thể chứng minh rằng luôn tồn tại cách biến đổi.

Dữ liệu vào

  • Dòng đầu chứa số nguyên t — số lượng test trong file.
  • t dòng tiếp theo, mỗi dòng chứa một xâu nhị phân s.

Dữ liệu ra

Với mỗi test, in ra trên một dòng số thao tác ít nhất cần thực hiện.

Ràng buộc

  • 1t100
  • 1|s|1000
  • s chỉ gồm các ký tự 01.

Ví dụ

Input Output Giải thích
7
001
100
101
010
0
1
001100
0
0
1
1
0
0
2
Test 1, 2, 5, 6: xâu vốn đã đẹp.
Test 3 101: lật ký tự đầu thành 001 (đẹp).
Test 4 010: lật ký tự giữa thành 000 (đẹp).
Test 7 001100: lật ký tự thứ 3 và 4 thành 000000 (đẹp).
3
110
0111000
0110
0
1
1
110 đã đẹp.
0111000 chứa 010 (vị trí 1, 2, 5); lật ký tự đầu thành 1111000 (đẹp).
0110 chứa 010 (vị trí 1, 2, 4); lật ký tự cuối thành 0111 (đẹp).

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