JOI 2016 - Selling RNA Strands

Xem PDF



Dạng bài
Ngôn ngữ cho phép
Assembly, Awk, C, C#, C++, Clang, Cobol, D, Groovy, Haskell, JS, Java, Kotlin, Lua, Node JS, OCaml, ObjectiveC, PHP, Pascal, Perl, Prolog, Pypy, Pypy 3, Python, Ruby, Rust, Scala, Scratch, Swift
Điểm: 2100 (p) Thời gian: 1.5s Bộ nhớ: 2G Input: bàn phím Output: màn hình

Bạn có biết Công ty TNHH Just Odd Inventions không? Công việc kinh doanh của công ty này là tạo ra “những phát minh kỳ lạ”. Trong bài này, ta gọi tắt là công ty JOI.

Gần đây, lợi nhuận của công ty JOI sụt giảm nghiêm trọng vì chỉ kinh doanh những phát minh kỳ lạ. Công ty dự định bắt đầu một hoạt động kinh doanh mới: bán dung dịch chứa các chuỗi RNA. Một chuỗi RNA được xem là một xâu chỉ gồm bốn ký tự A, G, C, U. Công ty JOI đã chuẩn bị \(N\) chuỗi RNA để kinh doanh.

Công ty nhận đơn hàng từ khách hàng theo hình thức sau: khách hàng chọn hai xâu \(P,Q\). Trong số các chuỗi RNA đã chuẩn bị, công ty bán những chuỗi có \(|P|\) ký tự đầu tiên là \(P\)\(|Q|\) ký tự cuối cùng là \(Q\). Ở đây, \(|P|\)\(|Q|\) lần lượt là độ dài của \(P\)\(Q\).

Có bao nhiêu chuỗi RNA mà công ty đã chuẩn bị thỏa mãn điều kiện của từng đơn hàng?

Yêu cầu

Cho thông tin về các chuỗi RNA đã chuẩn bị và các đơn hàng của khách hàng, hãy tính số chuỗi RNA thỏa mãn điều kiện của mỗi đơn hàng.

Dữ liệu vào

Đọc từ đầu vào chuẩn:

  • Dòng đầu tiên chứa hai số nguyên \(N,M\) cách nhau bởi một dấu cách: số chuỗi RNA công ty đã chuẩn bị và số đơn hàng.
  • Dòng thứ \(i\) trong \(N\) dòng tiếp theo (\(1\le i\le N\)) chứa xâu \(S_i\), là chuỗi RNA thứ \(i\).
  • Dòng thứ \(j\) trong \(M\) dòng tiếp theo (\(1\le j\le M\)) chứa hai xâu \(P_j,Q_j\) cách nhau bởi một dấu cách, là hai xâu khách hàng chọn trong đơn hàng thứ \(j\).

Dữ liệu ra

In \(M\) dòng ra đầu ra chuẩn. Dòng thứ \(j\) (\(1\le j\le M\)) chứa một số nguyên: số chuỗi RNA đã chuẩn bị thỏa mãn điều kiện của đơn hàng thứ \(j\).

Ràng buộc

  • \(1\le N\le 100\,000\).
  • \(1\le M\le 100\,000\).
  • Mỗi xâu chỉ chứa các ký tự A, G, C, U.
  • \(1\le |S_i|\le 100\,000\) với mọi \(1\le i\le N\).
  • \(1\le |P_j|\le 100\,000\) với mọi \(1\le j\le M\).
  • \(1\le |Q_j|\le 100\,000\) với mọi \(1\le j\le M\).

Các tổng độ dài thỏa mãn riêng từng giới hạn sau:

  • \(|S_1|+|S_2|+\cdots+|S_N|\le 2\,000\,000\).
  • \(|P_1|+|P_2|+\cdots+|P_M|\le 2\,000\,000\).
  • \(|Q_1|+|Q_2|+\cdots+|Q_M|\le 2\,000\,000\).

Phân nhóm

Subtask 1 (10 điểm)
  • \(N\le 100\).
  • \(M\le 100\).
  • \(|S_i|\le 100\) với mọi \(1\le i\le N\).
  • \(|P_j|\le 100\) với mọi \(1\le j\le M\).
  • \(|Q_j|\le 100\) với mọi \(1\le j\le M\).
Subtask 2 (25 điểm)
  • \(N\le 5\,000\).
  • \(M\le 5\,000\).
Subtask 3 (25 điểm)

Các tổng độ dài thỏa mãn riêng từng giới hạn sau:

  • \(|S_1|+|S_2|+\cdots+|S_N|\le 100\,000\).
  • \(|P_1|+|P_2|+\cdots+|P_M|\le 100\,000\).
  • \(|Q_1|+|Q_2|+\cdots+|Q_M|\le 100\,000\).
Subtask 4 (40 điểm)

Không có ràng buộc bổ sung.

Ví dụ

Ví dụ 1

Input
2 3
AUGC
AGC
G C
AU C
A C
Output
0
1
2
Giải thích

Trong ví dụ này, công ty JOI đã chuẩn bị hai chuỗi RNA AUGCAGC.

  • Với đơn hàng thứ nhất, in 0 vì không có chuỗi RNA nào có ký tự đầu tiên là G và ký tự cuối cùng là C.
  • Với đơn hàng thứ hai, in 1 vì chỉ có chuỗi RNA AUGC bắt đầu bằng AU và kết thúc bằng C.
  • Với đơn hàng thứ ba, in 2 vì cả hai chuỗi RNA AUGCAGC đều có ký tự đầu tiên là A và ký tự cuối cùng là C.

Ví dụ 2

Input
3 3
AA
AA
AGA
AA AA
AG GA
AG GA
Output
2
1
1
Giải thích

Lưu ý rằng các chuỗi RNA giống nhau hoặc các đơn hàng giống nhau có thể xuất hiện nhiều lần. Ngoài ra, phần đầu và phần cuối được chọn trong một đơn hàng có thể chồng lấn nhau. Chẳng hạn, chuỗi RNA AGA được xem là bắt đầu bằng AG và kết thúc bằng GA.

Ví dụ 3

Input
8 7
GCGCUACCCCAACACAAGGCAAGAUAUA
G
GGAC
GCGG
U
GCGCUACCCCAACACAAGGCAAGAUGGUC
GCCG
GCGCUGA
GCGCUACCC A
GCGCUACCCC AC
GCG C
GCGC A
G G
G C
G GGA
Output
1
0
1
2
3
2
0

Bình luận

Mới nhất
Tải bình luận...

Không có bình luận nào.

Kỳ thi: