题目链接:https://codeforces.com/contest/1359/problem/B
有一块 $n \times m$ 的地板和两种瓷砖:
地板为 '.' 表示未铺瓷砖,瓷砖不可旋转, 问铺满瓷砖的最小花费。
因为 $1 \times 2$ 的瓷砖不能旋转,所以每次逐行考虑即可,注意 $y$ 取 $min(2x, y)$ 。
#include
using namespace std;
void solve() {
int n, m, x, y; cin >> n >> m >> x >> y;
y = min(2 * x, y);
int ans = 0;
for (int i = 0; i < n; i++) {
string s; cin >> s;
for (int j = 0; j < m; j++) {
if (s[j] == '.') {
if (j + 1 < m and s[j + 1] == '.')
ans += y, ++j;
else
ans += x;
}
}
}
cout << ans << "\n";
}
int main() {
int t; cin >> t;
while (t--) solve();
}
手机扫一扫
移动阅读更方便
你可能感兴趣的文章