Xâu tương đồng (Tin học trẻ C - Vòng Toàn quốc 2020)
Xem PDFCho hai xâu \(A\) và \(B\) chỉ chứa các kí tự in hoa trong khoảng từ A tới Z. Kí hiệu \(|A|, |B|\) lần lượt là độ dài của hai xâu \(A\) và \(B\) (\(1 \le |A|, |B| \le 5 \cdot 10^4\)). Các kí tự của mỗi xâu được đánh số từ \(1\).
Gọi \(A[i..j]\) là xâu con gồm các kí tự liên tiếp của xâu \(A\) từ vị trí thứ \(i\) đến vị trí thứ \(j\) (\(1 \le i \le j \le |A|\)). Gọi \(B[p..q]\) là xâu con gồm các kí tự liên tiếp của xâu \(B\) từ vị trí thứ \(p\) đến vị trí \(q\) (\(1 \le p \le q \le |B|\)).
Hai xâu con \(A[i..j]\) và \(B[p..q]\) được gọi là tương đồng nhau nếu tập hợp các chữ cái xuất hiện trong xâu con \(A[i..j]\) bằng với tập hợp các chữ cái xuất hiện trong xâu con \(B[p..q]\).
Xét ví dụ \(A =\) AAABBC và \(B =\) AZACAB ta có:
- \(A[3..5] =\)
AABvà \(B[5..6] =\)ABlà tương đồng nhau vì có cùng tập hợp các chữ cái xuất hiện là {A,B}. - \(A[3..6] =\)
ABBCvà \(B[4..6] =\)CABlà tương đồng nhau vì có cùng tập hợp các chữ cái xuất hiện là {A,B,C}.
Yêu cầu: Cho xâu \(A\) và xâu \(B\), hãy xác định số bộ \((i, j, p, q)\) (\(1 \le i \le j \le |A|, 1 \le p \le q \le |B|\)) thỏa mãn \(A[i..j]\) tương đồng với \(B[p..q]\).
Input
- Dòng thứ nhất ghi xâu \(A\).
- Dòng thứ hai ghi xâu \(B\).
Output
- Một số nguyên duy nhất là số lượng bộ \((i, j, p, q)\) thỏa mãn yêu cầu.
Constraints
- \(1 \le |A|, |B| \le 5 \cdot 10^4\).
Scoring
- Subtask \(1\) (\(10\%\) số điểm): \(1 \le |A|, |B| \le 10\).
- Subtask \(2\) (\(20\%\) số điểm): \(1 \le |A|, |B| \le 100\).
- Subtask \(3\) (\(30\%\) số điểm): \(1 \le |A|, |B| \le 1000\).
- Subtask \(4\) (\(40\%\) số điểm): \(1 \le |A|, |B| \le 5 \cdot 10^4\).
Example
Test 1
Input
AAABBC
AZACAB
Output
34
Note
- Có \(18\) bộ cùng có tập hợp chữ cái là {
A}. - Có \(3\) bộ cùng có tập hợp chữ cái là {
B}. - Có \(1\) bộ cùng có tập hợp chữ cái là {
C}. - Có \(6\) bộ cùng có tập hợp chữ cái là {
A,B}. - Có \(6\) bộ cùng có tập hợp chữ cái là {
A,B,C}.
Kỳ thi:
- Tin học trẻ C - Vòng Toàn quốc 2020 (16 Tháng bảy, 2024)
Bình luận