Đề test ngày 16 - 05 - 2026
Trò Chơi "Đồng Bộ Mật Mã" (hsg)
Nộp bàiPoint: 5
Axe và Lina đang cố gắng đồng bộ hai chuỗi mật mã A và B sao cho chúng giống hệt nhau. Để làm được việc này, họ được cung cấp thêm một chuỗi mật mã thứ ba là C đóng vai trò là "chìa khóa hoán đổi". Cả 3 chuỗi này đều có cùng độ dài.
Luật chơi như sau:
- Bạn sẽ đi dọc theo các chuỗi từ trái sang phải. Tại mỗi vị trí, bạn BẮT BUỘC phải lấy ký tự của chuỗi C để tráo đổi với ký tự của chuỗi A HOẶC tráo đổi với ký tự của chuỗi B.
(Lưu ý: Không được phép giữ nguyên, bắt buộc phải tráo C với A hoặc tráo C với B).
Yêu cầu: Sau khi đi hết toàn bộ chuỗi và thực hiện xong các phép tráo đổi, liệu bạn có thể làm cho chuỗi A và chuỗi B trở nên giống y hệt nhau được không?
Dữ liệu vào (Input):
• Dòng đầu tiên chứa số nguyên T (1 <= T <= 100) – số lượng câu hỏi.
• Mỗi câu hỏi gồm 3 dòng, lần lượt là 3 chuỗi A, B, C (chỉ gồm các chữ cái in thường, độ dài tối đa 100 ký tự).
Dữ liệu ra (Output):
• In ra YES nếu có cách tráo đổi để chuỗi A giống hệt chuỗi B.
• Nếu không có cách nào, in ra NO.
Ví dụ minh họa:
Input:
2
abc
bca
bca
imi
mii
iim
Output:
YES
NO
Siêu anh hùng (hsg)
Nộp bàiPoint: 5
Trong vũ trụ siêu anh hùng, một người có tên là S muốn sử dụng phép thuật để biến hình, giả dạng thành một siêu anh hùng khác có tên là T. Tuy nhiên, phép biến hình này phải tuân thủ nghiêm ngặt Quy luật Cấu trúc Ký tự.
Trong thế giới này, các chữ cái được chia làm 2 hệ:
• Hệ Nguyên âm: Bao gồm 5 chữ cái a, e, i, o, u.
• Hệ Phụ âm: Bao gồm tất cả các chữ cái tiếng Anh in thường còn lại.
Để biến hình thành công từ tên S sang tên T, hai cái tên này bắt buộc phải thỏa mãn 2 điều kiện sau:
Khớp độ dài: Tên S và tên T phải có số lượng chữ cái bằng nhau.
Khớp hệ ký tự: Tại bất kỳ vị trí tương ứng nào, một Nguyên âm chỉ có thể biến thành một Nguyên âm (hoặc giữ nguyên), và một Phụ âm chỉ có thể biến thành một Phụ âm (hoặc giữ nguyên). Tuyệt đối không thể biến Nguyên âm thành Phụ âm hoặc ngược lại.
Yêu cầu: Cho trước hai cái tên S và T. Hãy kiểm tra xem phép biến hình này có thể thành công hay không?
Dữ liệu vào (Input):
• Dòng 1: Chứa chuỗi S (độ dài từ 1 đến 1000 ký tự).
• Dòng 2: Chứa chuỗi T (độ dài từ 1 đến 1000 ký tự). (Đảm bảo hai chuỗi luôn khác nhau và chỉ chứa các chữ cái in thường).
Dữ liệu ra (Output):
• In ra Yes nếu phép biến hình hợp lệ.
• In ra No nếu phép biến hình thất bại.
Ví dụ minh họa:
Input:
abc
ukm
Output:
Yes
Bức tường lượn sóng (Wiggle Subsequence)
Nộp bàiPoint: 5
Trong một trò chơi xếp gạch, em có N viên gạch với độ cao ban đầu là một mảng A. Em cần chọn ra một dãy con (giữ nguyên thứ tự, có thể xóa bớt một số viên) sao cho độ cao của các viên gạch tạo thành một "đường lượn sóng". Dãy lượn sóng được định nghĩa là sự chênh lệch giữa các phần tử liên tiếp phải luân phiên đổi dấu (dương, âm, dương, âm...). Hãy tìm chiều dài lớn nhất của dãy con lượn sóng này.
Dữ liệu vào:
Dòng 1: Số nguyên N (1 <= N <= 10^5).
Dòng 2: N số nguyên Ai (0 <= Ai <= 10^9).
Kết quả ra: Chiều dài lớn nhất của dãy con.
Ví dụ:
Input:
6
1 7 4 9 2 5
Output:
6
(Toàn bộ dãy đã là lượn sóng: tăng, giảm, tăng, giảm, tăng).
Dãy con riêng biệt
Nộp bàiPoint: 5
Cho hai xâu S và T. Hãy đếm số lượng dãy con của S bằng T.
Dữ liệu vào:
Dòng 1: Xâu S.
Dòng 2: Xâu T. (Độ dài S, T không quá 1000).
Dữ liệu ra:
Số lượng dãy con modulo 10^9 + 7.
Ví dụ:
Input:
rabbbit
rabbit
Output:
3