trang chủ / bài tập / bbreedsi / lời giải

Giống bò cân bằng (Dễ)

Chỉ dùng lời giải này khi không có ý tưởng, và đừng copy-paste code từ lời giải này. Hãy tôn trọng người ra đề và người viết lời giải.
Nộp một lời giải chính thức trước khi tự giải là một hành động có thể bị ban.
Tác giả: huunguyenhuunguyen

Lời giải: Giống bò cân bằng (Dễ)

Hướng tiếp cận

Quy hoạch động 2D: dp[i][a] = số cách gán i ký tự đầu với giống A có a dấu ( chưa khớp.

Nhận xét quan trọng

  1. Số dấu ( chưa khớp của giống B = tổng dấu ( chưa khớp tính đến vị trí i trừ a. Vậy B được xác định bởi (i,a) → giảm từ O(N3) xuống O(N2).
  2. Gán ký tự thứ i cho giống A hay B đều hợp lệ nếu số ( chưa khớp tương ứng không âm.
  3. Modulo 2012.

Thuật toán

DP tiến từ đầu đến cuối chuỗi, cập nhật dp[a] tại mỗi bước. Kết quả là dp[0] sau khi xử lý toàn bộ chuỗi (khi tổng dấu ( chưa khớp = 0).

Độ phức tạp

  • Thời gian: O(N2)
  • Bộ nhớ: O(N)

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