Các lượt nộp
    Danh sách bài
    Trang chủ
    Báo lỗi

    solution

    Đề bài: [Giải thuật] Đếm tổng số lần khớp nhiều mẫu

    Cho kkk xâu mẫu P1,…,PkP_1, \dots, P_kP1​,…,Pk​ và một xâu văn bản TTT. Hãy đếm tổng số lần xuất hiện của tất cả các mẫu trong TTT (cho phép chồng lấn; nếu nhiều mẫu giống nhau thì đếm riêng từng mẫu; mỗi vị trí khớp của mỗi mẫu tính một lần).

    Sử dụng máy tự động Aho–Corasick để xử lý trong O(∑∣Pi∣+∣T∣+soˆˊ laˆˋn khớp)O(\sum|P_i| + |T| + \text{số lần khớp})O(∑∣Pi​∣+∣T∣+soˆˊ laˆˋn khớp) — ở đây ta chỉ cần tổng số nên dùng đếm gộp theo liên kết suffix.

    Ví dụ: Mẫu ab, bc trong abc: ab khớp tại vị trí 111, bc khớp tại vị trí 222, tổng 222.

    • Định dạng đầu vào:

      Dòng đầu chứa kkk. kkk dòng tiếp theo, mỗi dòng một xâu mẫu. Dòng cuối chứa xâu văn bản TTT. Tất cả gồm chữ cái la-tinh thường.

    • Ràng buộc đầu vào:

      1≤k≤1041 \le k \le 10^41≤k≤104, 1≤∑∣Pi∣≤1061 \le \sum |P_i| \le 10^61≤∑∣Pi​∣≤106, 1≤∣T∣≤1061 \le |T| \le 10^61≤∣T∣≤106.

    • Định dạng đầu ra:

      In ra một số nguyên là tổng số lần khớp.

    Ví dụ:

    Đầu vào:

    2
    ab
    bc
    abc
    

    Đầu ra:

    2

    Giải thích:

    Mẫu ab khớp tại vị trí bắt đầu 1, mẫu bc khớp tại vị trí 2. Hai lần khớp khác nhau nên tổng là 2.

    Đang tải editor...