Đếm xâu con tốt

Đề bài

Mô tả

Cho xâu s gồm các chữ cái la-tinh thường. Một xâu t được gọi là tốt nếu nó thỏa mãn tất cả n luật cho trước. Mỗi luật được mô tả bởi bộ ba (p,l,r) trong đó p là một xâu và l,r là hai số nguyên (lr): xâu t thỏa luật (p,l,r) nếu số lần xuất hiện của t trong p nằm trong đoạn [l,r] (kể cả hai đầu).

Số lần xuất hiện của xâu t trong xâu p là số cặp (l,r) thỏa 1lr|p|p[l..r]=t (các vị trí xuất hiện có thể chồng lấp nhau).

Hãy đếm số xâu con phân biệt của s là xâu tốt. Hai xâu con s[x..y]s[z..w] được coi là khác nhau nếu và chỉ nếu s[x..y]s[z..w] (tức là so sánh dạng xâu, không phải so sánh vị trí).

Dữ liệu vào

  • Dòng đầu chứa xâu s.
  • Dòng thứ hai chứa số nguyên n.
  • n dòng tiếp theo, mỗi dòng chứa một luật gồm xâu pi và hai số nguyên li,ri cách nhau bởi khoảng trắng.

Các xâu chỉ gồm chữ cái la-tinh thường và đều khác rỗng.

Dữ liệu ra

  • In ra một số nguyên duy nhất — số xâu con phân biệt của s là xâu tốt.

Ràng buộc

  • 1|s|200
  • 0n10
  • 1|pi|200
  • 0liri|pi|

Ví dụ

Input Output Giải thích
aaab
2
aa 0 0
aab 1 1
3 Ba xâu con tốt là «aab», «ab» và «b». Chúng đều không xuất hiện trong "aa" (luật 1) và xuất hiện đúng 1 lần trong "aab" (luật 2).
ltntlnen
3
n 0 0
ttlneenl 1 4
lelllt 1 1
2 Chỉ có hai xâu con tốt là «e» và «t».
a
0
1 Không có luật nào nên mọi xâu con đều tốt; s có duy nhất một xâu con phân biệt là «a».

Bình luận

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

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.47 awk 1.3.4 gcc 16.2.0 dotnet 10.0.400 g++ 16.2.0 g++-themis 16.2.0 g++17 16.2.0 g++20 16.2.0 g++23 16.2.0 clang++ 22.1.8 dmd 2.113.0 dart 3.13.2 gforth 0.7.3 gfortran 12.2.0 go 1.27.0 groovyc 5.1.1 javac 25.0.4 node 26.8.1 julia 1.12.7 kotlinc 2.4.10 lean 4.33.1 sbcl 2.2.9 lua 5.4.9 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.10 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.14.7 racket 8.7 ruby 4.0.6 rustc 1.98.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.3.3 tclsh 8.6 bun 1.4.0 deno 2.9.6 v 0.5.2 zig 0.16.0