trang chủ / đề bài / pt_tst_25_f

Đếm chuỗi con

Đề bài

Mô tả

Công ty khởi nghiệp DroneX được đầu tư sản xuất hàng loạt các máy bay không người lái (drone) phục vụ nông nghiệp. Sản phẩm của họ trợ giúp cho người nông dân có thể bón phân qua lá cho các cây có độ cao lớn như sầu riêng, hồ tiêu, điều, ... Drone của họ cũng được sử dụng trong việc vận chuyển hàng hoá tới các vùng khó khăn, những nơi mà các phương tiện bình thường khác không thể tiếp cận. Mô hình kinh doanh của họ cũng đặc biệt: sản phẩm của họ không bán, chỉ cho thuê trực tiếp tại các cửa hàng tiện ích. Để kích hoạt drone khởi động, khách hàng phải nhập dãy số gồm m số bí mật, nếu chúng trùng khớp trong hệ thống của công ty, drone sẽ được kích hoạt tự động và sẵn sàng bay.

Mỗi khi có khách đến thuê drone, cửa hàng sẽ cung cấp cho khách hàng một chuỗi kí tự t và một tập hợp n chuỗi s1,s2,s3,…,sn. Để lấy được m số bí mật, công ty sẽ gửi cho mỗi khách hàng m cặp chỉ số l,r. Nhiệm vụ của khách hàng là với mỗi cặp chỉ số l,r đó, lấy chuỗi con của t từ kí tự thứ l đến ký tự thứ r và đếm số lượng chuỗi con này nếu trùng khớp với chuỗi nào đó từ tập đã cho. Thứ tự các số bí mật tìm được phải trùng với thứ tự của các cặp l,r mà khách hàng nhận được.

Sau khi có kết quả, khách hàng sẽ gửi về cho công ty, nếu trùng khớp, drone đã sẵn sàng khởi động.

Một cách tiếp cận khác: Đếm số cặp vị trí (a,b) sao cho li≤a≤b≤ri và chuỗi con của chuỗi t từ vị trí a đến b khớp với một chuỗi sj nào đó từ tập hợp đã cho.

Chuỗi con của chuỗi t từ vị trí a đến b là chuỗi được tạo ra bằng cách xóa a−1 ký tự đầu và |t|−b ký tự cuối của t, trong đó |t| là độ dài của chuỗi t.

Dữ liệu vào

  • Dòng đầu tiên chứa hai số nguyên dương n và m (1≤n,m≤500000) lần lượt là số lượng chuỗi trong tập hợp mà cửa hàng gửi cho khách hàng và số lượng cặp l,r mà công ty gửi cho khách hàng.
  • Dòng thứ hai chứa duy nhất chuỗi t, chỉ bao gồm các chữ cái tiếng Anh viết thường (1≤|t|≤5×106).
  • n dòng tiếp theo mô tả các chuỗi trong tập hợp. Dòng thứ i chứa duy nhất một chuỗi si, bao gồm các chữ cái tiếng Anh viết thường. Gọi S là tổng độ dài của tất cả các chuỗi trong tập hợp. Dữ liệu luôn đảm bảo S≤106, và tất cả các chuỗi si là khác nhau.
  • m dòng tiếp theo, dòng thứ i chứa hai số nguyên dương li và ri (1≤li≤ri≤|t|) lần lượt là biên trái và biên phải của chuỗi con lấy ra từ chuỗi t từ cặp l,r thứ i.

Các số trên cùng một dòng cách nhau bởi một dấu cách.

Dữ liệu ra

Một dòng duy nhất ghi dãy số bí mật tìm được để gửi kích hoạt drone, trong đó số thứ i là kết quả của cặp l,r thứ i. Các số cách nhau bởi một dấu cách.

Ràng buộc

  • 1≤n,m≤500000.
  • 1≤|t|≤5×106; t và các si chỉ gồm chữ cái tiếng Anh viết thường.
  • S≤106, các chuỗi si đôi một khác nhau.
  • 1≤li≤ri≤|t|.

Subtasks

Điểm được tính theo từng test; số test của mỗi subtask tương ứng với tỉ lệ điểm.

  • Subtask 1 (12% số điểm): n≤100, m≤100, |t|≤100, S≤10000.
  • Subtask 2 (14% số điểm): n≤100, m≤500, |t|≤5000.
  • Subtask 3 (11% số điểm): n≤5000, |t|≤5000.
  • Subtask 4 (10% số điểm): n≤100, |t|≤50000.
  • Subtask 5 (12% số điểm): |t|≤100000, S≤100000.
  • Subtask 6 (10% số điểm): |t|≤250000, S≤100000.
  • Subtask 7 (10% số điểm): |t|≤500000, S≤100000.
  • Subtask 8 (10% số điểm): |t|≤750000, S≤100000.
  • Subtask 9 (11% số điểm): Không có ràng buộc bổ sung.

Ví dụ

Input Output Giải thích
3 5
abacaba
aba
a
ac
1 7
1 3
2 7
2 5
4 5
7 3 5 3 1 Cặp l,r đầu tiên yêu cầu đếm số lượng chuỗi con của toàn bộ chuỗi khớp với các chuỗi trong tập hợp. Các chuỗi con khớp với "aba" là [1,3] và [5,7]. Các chuỗi con khớp với "a" là [1,1],[3,3],[5,5],[7,7]. Chuỗi con khớp với "ac" là [3,4]. Tổng cộng có 7 chuỗi con của "abacaba" khớp với các chuỗi từ tập hợp. Trong cặp l,r thứ hai, chuỗi con từ vị trí 1 đến 3 của chuỗi gốc được lấy, đó là chuỗi "aba". Trong đó, chuỗi "aba" xuất hiện 1 lần, chuỗi "a" xuất hiện 2 lần và chuỗi "ac" không xuất hiện lần nào. Tổng là 3. Trong cặp l,r thứ ba, chuỗi con từ vị trí 2 đến 7 của chuỗi gốc được lấy, đó là chuỗi "bacaba". Trong đó, chuỗi "aba" xuất hiện 1 lần, chuỗi "a" xuất hiện 3 lần và chuỗi "ac" xuất hiện 1 lần. Tổng là 5. Tương tự cho các cặp l,r còn lại.
3 4
aaaaa
a
aa
aaa
1 5
2 3
3 3
2 5
12 3 1 9 Ví dụ bổ sung (không có trong đề gốc). Các lần xuất hiện được đếm cả khi chồng lên nhau: với [1,5] có 5 lần "a", 4 lần "aa" và 3 lần "aaa", tổng 12. Với [2,5] (chuỗi "aaaa") có 4+3+2=9.

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.402 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.6 gforth 0.7.3 gfortran 15.3.0 go 1.27.3 groovyc 5.1.3 javac 26.0.2.1 node 26.12.1 julia 1.13.2 kotlinc 2.4.21 lean 4.35.0 sbcl 2.2.9 lua 5.5.1 nim 2.2.12 fpc 3.2.2 fpc-themis 3.2.2 perl 5.42.3 php 8.5.12 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.15.1 racket 8.7 ruby 4.0.8 rustc 1.99.1 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.4.1 tclsh 8.6 bun 1.4.4 deno 2.9.8 v 0.5.2 zig 0.17.0