Xâu tương đồng (Tin học trẻ C - Vòng Toàn quốc 2020)

Xem PDF



Tác giả:
Dạng bài
Ngôn ngữ cho phép
Assembly, Awk, C, C#, C++, Clang, Cobol, D, Groovy, Haskell, JS, Java, Kotlin, Lua, Node JS, OCaml, ObjectiveC, Output, PHP, Pascal, Perl, Prolog, Pypy, Pypy 3, Python, Ruby, Rust, Scala, Scratch, Swift
Điểm: 1700 (p) Thời gian: 1.0s Bộ nhớ: 1G Input: bàn phím Output: màn hình

Cho hai xâu \(A\)\(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\)\(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]\)\(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\(B =\) AZACAB ta có:

  • \(A[3..5] =\) AAB\(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\(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.

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
  • \(18\) bộ cùng có tập hợp chữ cái là {A}.
  • \(3\) bộ cùng có tập hợp chữ cái là {B}.
  • \(1\) bộ cùng có tập hợp chữ cái là {C}.
  • \(6\) bộ cùng có tập hợp chữ cái là {A, B}.
  • \(6\) bộ cùng có tập hợp chữ cái là {A, B, C}.

Bình luận

Mới nhất
Tải bình luận...

Không có bình luận nào.

Kỳ thi: