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

Lát sân chống ma

Đề bài

Mô tả

Cho một sân vườn dạng dải 1×N ô. Mỗi ô là đất (kí hiệu .) hoặc đá (kí hiệu #). Số ô đá không vượt quá 50.

Bạn cần lát sân bằng ba loại gạch:

  • Loại 1: kích thước 1×1, chỉ đặt được trên một ô đất ., mang giá trị G1.
  • Loại 2: kích thước 1×2, chỉ đặt được trên hai ô đất liên tiếp .., mang giá trị G2.
  • Loại 3: kích thước 1×3, chỉ đặt được trên ba ô liên tiếp theo thứ tự đất–đá–đất .#., mang giá trị G3.

Các viên gạch không được chồng lên nhau (mỗi ô được phủ bởi nhiều nhất một viên), và số viên gạch loại 1 không vượt quá K. Số viên gạch loại 2 và loại 3 không bị giới hạn. Bạn không bắt buộc phải lát hết các ô.

Hãy tìm tổng giá trị lớn nhất có thể thu được.

Dữ liệu vào

Dòng đầu chứa năm số nguyên N, K, G1, G2, G3.

Dòng thứ hai chứa một xâu độ dài N gồm các kí tự .# mô tả sân vườn.

Dữ liệu ra

In ra một số nguyên — tổng giá trị lớn nhất.

Ràng buộc

  • 1N105
  • 0KN
  • 0G1,G2,G31000
  • Số kí tự # trong xâu không vượt quá 50.

Ví dụ

Input Output Giải thích
6 4 10 25 40
..#...
75 Một cách lát tối ưu: A, CCC, BB (loại 1 + loại 3 + loại 2) cho tổng 10+40+25=75.
6 4 10 100 40
..#...
210 Cùng sân vườn, nhưng G2 rất lớn. Lát BB#BBA được 100+100+10=210 (ô thứ ba để trống).
7 2 30 10 100
..#...#
160 Lát ACCCAA#: hai gạch loại 1 và một gạch loại 3 cho 30+100+30=160. Ô đá cuối không thể phủ.

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