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

Ghép cặp bốt màu

Đề bài

Mô tả

n chiếc bốt trái và n chiếc bốt phải. Mỗi chiếc bốt có một màu được biểu diễn bằng một chữ cái Latin thường hoặc dấu chấm hỏi (?). Hai xâu lr độ dài n mô tả màu của các chiếc bốt: li là màu của chiếc bốt trái thứ iri là màu của chiếc bốt phải thứ i.

Chữ cái thường biểu thị một màu cụ thể, còn dấu ? biểu thị màu bất định. Hai màu cụ thể là tương thích nếu chúng giống hệt nhau. Màu bất định (?) tương thích với mọi màu (cụ thể hoặc bất định).

Hãy tính số cặp bốt lớn nhất có thể ghép được, trong đó mỗi cặp gồm một chiếc bốt trái và một chiếc bốt phải có màu tương thích. Mỗi chiếc bốt chỉ được thuộc nhiều nhất một cặp.

Bên cạnh số lượng, hãy in ra chính các cặp đã ghép.

Dữ liệu vào

  • Dòng thứ nhất chứa số nguyên n — số bốt của mỗi bên.
  • Dòng thứ hai chứa xâu l độ dài n (chỉ gồm chữ cái Latin thường và dấu ?).
  • Dòng thứ ba chứa xâu r độ dài n (chỉ gồm chữ cái Latin thường và dấu ?).

Dữ liệu ra

  • Dòng đầu in ra số nguyên k — số cặp lớn nhất ghép được.
  • k dòng tiếp theo, mỗi dòng in ra hai số nguyên aj,bj (1aj,bjn) là chỉ số của bốt trái và bốt phải trong cặp thứ j. Tất cả các aj đôi một khác nhau, và tất cả các bj đôi một khác nhau.

Nếu có nhiều đáp án tối ưu, hãy in ra bất kỳ đáp án nào.

Ràng buộc

  • 1n150000.

Ví dụ

Input Output Giải thích
10
codeforces
dodivthree
5
3 1
4 9
9 10
2 2
7 8
Ghép được tối đa 5 cặp. Có nhiều cách ghép khác nhau đều cho 5 cặp.
7
abaca?b
zabbbcc
5
5 2
7 5
2 4
4 7
6 3
Chiếc bốt trái thứ 5 có màu ?, ghép được với bốt phải bất kỳ (ở đây là chiếc a thứ 2 bên phải).
9
bambarbia
hellocode
0 Không có màu nào ở bên trái trùng với bên phải, và không có dấu ? nào, nên không thể ghép cặp nào.
10
code??????
??????test
10
4 8
10 9
9 10
8 7
1 6
3 5
2 4
7 3
6 2
5 1
Mỗi bên có 6 dấu ?, có thể ghép hết tất cả 10 cặ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 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