trang chủ / đề bài / voi23_adn

Chuỗi ADN

Đề bài

Mô tả

Tiến sĩ Tuấn là một nhà sinh học phân tử có rất nhiều công trình nghiên cứu về sự đa dạng của các chuỗi ADN. Chuỗi ADN là một dãy các nuclêôtít được biểu diễn bằng một xâu kí tự chỉ chứa bốn loại kí tự A, T, G, X tương ứng với bốn loại nuclêôtít khác nhau. Ông đang nghiên cứu một chuỗi ADN được biểu diễn bởi một xâu N phần tử S1S2…SN. Một đoạn con [i,j] được xác định bởi vị trí phần tử bắt đầu i và vị trí phần tử kết thúc j (1≤i≤j≤N) trong xâu là một dãy gồm các phần tử liên tiếp nhau SiSi+1…Sj.

Tiến sĩ Tuấn định nghĩa một đoạn con là phức tạp nếu như đoạn đó chứa ít nhất hai kí tự khác nhau. Ví dụ, [1,3] là một đoạn con phức tạp trong xâu ATTTG. Tiếp theo, ông định nghĩa độ đa dạng của một chuỗi ADN là số lượng đoạn con phức tạp trong xâu tương ứng. Hai đoạn con gọi là khác nhau nếu có ít nhất một trong hai vị trí bắt đầu và kết thúc của chúng là khác nhau.

Do sơ suất, tiến sĩ Tuấn làm mất thông tin một số phần tử trong chuỗi ADN đang nghiên cứu. Vì vậy, ông biểu diễn một kí tự chấm hỏi (?) cho mỗi phần tử bị mất thông tin.

Yêu cầu: Hãy giúp tiến sĩ Tuấn tính độ đa dạng nhỏ nhất của chuỗi ADN nêu trên khi thay mỗi kí tự chấm hỏi (?) bởi một trong bốn kí tự A, T, G, X.

Dữ liệu vào

Dữ liệu vào gồm một dòng duy nhất chỉ chứa N kí tự thuộc tập {A,T,G,X,?} viết liên tiếp nhau không có dấu cách (1≤N≤106).

Dữ liệu ra

In ra một số nguyên là độ đa dạng nhỏ nhất tìm được.

Ràng buộc

  • 1≤N≤106.
  • Xâu chỉ gồm các kí tự thuộc tập {A,T,G,X,?}.

Subtasks

  • Subtask 1 (20% số điểm): N≤10.
  • Subtask 2 (20% số điểm): N≤20.
  • Subtask 3 (24% số điểm): N≤5000.
  • Subtask 4 (16% số điểm): N≤105.
  • Subtask 5 (20% số điểm): N≤106.

Ví dụ

Input Output Giải thích
A?T?G 7 ATTTG là một chuỗi ADN có độ đa dạng ít nhất sau khi đã thay thế mỗi kí tự ? bởi một trong bốn kí tự A, T, G, X. Các đoạn con phức tạp bao gồm: [1,2], [1,3], [1,4], [1,5], [2,5], [3,5], [4,5].
T??TA?G 14 Ví dụ bổ sung (không có trong đề gốc). Thay được TTTTAAG: có 28 đoạn con, trong đó 10+3+1=14 đoạn chỉ gồm một loại kí tự, nên độ đa dạng là 14.

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