trang chủ / đề bài / theatresq

Lát nền quảng trường

Đề bài

Mô tả

Quảng trường nhà hát là một hình chữ nhật kích thước n×m mét, được chia thành lưới n hàng và m cột ô vuông đơn vị. Ô ở hàng i, cột j được ký hiệu là ai,j:

  • nếu ai,j là ký tự * thì ô đó đã được lát sẵn;
  • nếu ai,j là ký tự . thì ô đó còn trống và bạn phải lát nó.

Có hai loại gạch để lựa chọn:

  • gạch 1×1, giá x đồng, phủ đúng 1 ô;
  • gạch 1×2, giá y đồng, phủ đúng 2 ô kề nhau trong cùng một hàng.

Gạch 1×2 không được xoay (nên không thể phủ hai ô kề nhau theo chiều dọc) và không được cắt thành hai viên 1×1.

Bạn phải phủ hết mọi ô trống, hai viên gạch bất kỳ không được chồng lên nhau, và không viên gạch nào được phủ lên ô đã lát sẵn.

Hãy tính tổng chi phí nhỏ nhất để lát hết các ô trống.

Dữ liệu vào

  • Dòng đầu chứa số nguyên t là số bộ dữ liệu.
  • Mỗi bộ dữ liệu gồm:
    • Dòng đầu chứa bốn số nguyên n, m, x, y: kích thước quảng trường, giá viên gạch 1×1 và giá viên gạch 1×2.
    • n dòng tiếp theo, mỗi dòng chứa m ký tự . hoặc * mô tả lưới.

Dữ liệu ra

Với mỗi bộ dữ liệu, in ra một số nguyên là tổng chi phí nhỏ nhất.

Ràng buộc

  • 1≤t≤500
  • 1≤n≤100
  • 1≤m≤1000
  • 1≤x,y≤1000
  • Tổng n×m trên tất cả các bộ dữ liệu không vượt quá 105.

Ví dụ

Input Output Giải thích
4
1 1 10 1
.
1 2 10 1
..
2 1 10 1
.
.
3 3 3 7
..
..
.*.
10
1
20
18
Bộ 1: chỉ có một ô trống nên buộc phải dùng gạch 1×1 dù nó đắt hơn, chi phí 10.
Bộ 2: dùng một viên 1×2 hết 1 đồng, rẻ hơn hai viên 1×1 hết 20 đồng.
Bộ 3: hai ô trống nằm cùng cột chứ không cùng hàng, mà gạch 1×2 không được xoay, nên vẫn phải dùng hai viên 1×1, chi phí 20.
Bộ 4: ở đây y=7>2x=6 nên viên 1×2 không bao giờ có lợi; lát cả 6 ô trống bằng gạch 1×1 hết 6·3=18.
1
3 3 2 4
.

**
2 Chỉ còn đúng một ô trống ở góc trên bên phải, lát bằng một viên 1×1 giá 2.

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