trang chủ / bài tập / messenger

Messenger

Đề bài

Mô tả

Cho hai xâu ký tự ts chỉ gồm các chữ cái latin viết thường, được biểu diễn dưới dạng nén. Mỗi xâu là một dãy các khối liên tiếp, mỗi khối gồm các ký tự giống nhau và được mô tả bởi cặp (li,ci) — nghĩa là khối thứ i gồm li lần ký tự ci. Lưu ý dạng nén của một xâu không phải là duy nhất: hai khối liên tiếp có thể có cùng ký tự (ví dụ xâu aaaa có thể được mô tả là 4-a, 2-a 2-a, hoặc 1-a 3-a, …).

Một vị trí p (1p|t||s|+1) được gọi là một lần xuất hiện của s trong t nếu tptp+1tp+|s|1=s, trong đó |t|,|s| là độ dài xâu gốc (sau khi giải nén) và ti là ký tự thứ i của t.

Yêu cầu: đếm số lần xuất hiện của s trong t.

Dữ liệu vào

  • Dòng đầu chứa hai số nguyên nm — số khối của ts.
  • Dòng thứ hai mô tả n khối của t, mỗi khối ở dạng l-c (cách nhau bởi dấu cách).
  • Dòng thứ ba mô tả m khối của s, theo cùng định dạng.

Dữ liệu ra

Một số nguyên duy nhất — số lần xuất hiện của s trong t.

Ràng buộc

  • 1n,m2·105
  • 1li106
  • ci là chữ cái latin viết thường.

Ví dụ

Input Output Giải thích
5 3
3-a 2-b 4-c 3-a 2-c
2-a 2-b 1-c
1 t= "aaabbccccaaacc", s= "aabbc". Lần xuất hiện duy nhất bắt đầu tại vị trí p=2.
6 1
3-a 6-b 7-a 4-c 8-e 2-a
3-a
6 t= "aaabbbbbbaaaaaaacccceeeeeeeeaa", s= "aaa". Có 6 lần xuất hiện bắt đầu tại các vị trí 1,10,11,12,13,14.
5 5
1-h 1-e 1-l 1-l 1-o
1-w 1-o 1-r 1-l 1-d
0 t= "hello", s= "world". Không có lần xuất hiện nào.

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.46 awk 1.3.4 gcc 16.1.0 csc 6.12.0.200 g++ 16.1.0 g++-themis 16.1.0 g++17 16.1.0 g++20 16.1.0 g++23 16.1.0 clang++ 22.1.6 dmd 2.112.0 dart 3.12.1 gforth 0.7.3 gfortran 12.2.0 go 1.26.3 groovyc 5.0.6 javac 25.0.3 node 26.2.0 kotlinc 2.3.21 sbcl 2.2.9 lua 5.4.8 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.6 pike 8.0 pypy3 7.3.23 python3 3.14.5 racket 8.7 ruby 4.0.5 rustc 1.96.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 tclsh 8.6 bun 1.3.14 deno 2.8.1 v 0.5.1 zig 0.16.0