Xâu tương đồng (Tin học trẻ C - Vòng Toàn quốc 2020)
Xem PDFCho 2 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 50000\)). 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]=\) AAB và \(B[5..6]=\) AB là 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]=\) ABBC và \(B[4..6]=\) CAB là 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.
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 50000\).
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}.
Bình luận