Search of Concatenated Strings

Xem dạng PDF

Gửi bài giải

Điểm: 1,45 (OI)
Giới hạn thời gian: 3.68s
Giới hạn bộ nhớ: 256M
Input: stdin
Output: stdout

Nguồn bài:
Aizu 2008
Dạng bài
Ngôn ngữ cho phép
C, C++, Go, Java, Kotlin, Pascal, PyPy, Python, Rust, Scratch

Có nhiều phiên bản về bài toán tìm kiếm từ khóa trong một chuỗi. Nếu chỉ tìm một xâu trong một đoạn văn bản thì đã có thuật toán chuẩn. Nếu mẫu tìm kiếm gồm nhiều xâu con hoặc được mô tả bằng các biểu thức chính quy thì cần các thuật toán phức tạp hơn.

Trong bài toán này, một số xâu cơ bản được cho trước, nhưng chúng ta không tìm kiếm trực tiếp trên chúng mà tìm kiếm các xâu thu được bằng việc ghép chúng theo thứ tự bất kỳ.

Ví dụ, cho ba xâu cơ bản là aa, b và ccc. Chúng ta phải tìm kiếm ~6~ xâu sau trong đoạn văn bản.

aabccc
aacccb
baaccc
bcccaa
cccaab
cccbaa

Các xâu này có thể xuất hiện nhiều lần trong văn bản và bạn phải đếm số lần xuất hiện đó. Hai và nhiều xâu ghép có thể giống nhau, khi đó chỉ đếm một lần. VÍ dụ, nếu có ~2~ xâu cơ bản là x và xx, thì ta thu được xxx từ việc nối x với xx và xx nối x. Tuy nhiên, chúng ta chỉ tính là có một xâu xxx.

Ngoài ra, nếu một xâu xuất hiện nhiều lên trong ~1~ xâu khác và các vị trí này có thể giao nhau, ta vẫn đếm. Ví dụ, xâu xxx nằm trong xâu xxxx tại ~2~ vị trí khác nhau và kết quả là ~2~ mặc dù chúng giao nhau.

Input

INput gồm một số test, định dạng mỗi test như sau:

  • Dòng đầu tiên chứa 2 số ~n~ ~m~, ~n~ là số xâu cơ bản, ~m~ là số dòng biểu diễn văn bản, ~1 \leq n \leq 12~.
  • Mỗi dòng trong ~n~ dòng tiếp theo là ~1~ xâu cơ bản. Độ dài mẫu xâu cơ bản ~\geq 1~ và ~\leq 20~.
  • ~m~ dòng tiếp theo mô tả văn bản.

Kết thúc bộ test là dòng gồm ~2~ số ~0~.

Output

Với mỗi bộ test, in ra số lần xuất hiện của xâu ghép từ các xâu cơ bản trong văn bản trên 1 dòng.

Giới hạn

Văn bản được chia ra làm ~m~ dòng nhưng các kí tự xuống dòng không được tính là nằm trong văn bản

Độ dài mỗi dòng ~\geq 1~ và ~\leq 100~

Độ dài của đoạn văn bản ~\geq 1~ và ~\leq 5000~. Xâu cơ bản và đoạn văn bản chỉ gồm kí tự thường.

Sample Input

3 1
aa
b
ccc
aabccczbaacccbaazaabbcccaa
3 1
a
b
c
cbbcbcbabaacabccaccbaacbccbcaaaccccbcbcbbcacbaacccaccbbcaacbbabbabaccc
3 4
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
0 0

Sample Output

5
12
197

Bình luận

Hãy đọc nội quy trước khi bình luận.


Không có bình luận tại thời điểm này.