Đếm cây thông
Đề bài
Mô tả
Cho một bảng gồm hàng và cột, mỗi ô chứa ký tự * hoặc .. Hàng được đánh số từ đến từ trên xuống, cột được đánh số từ đến từ trái sang phải.
Một tập ô của bảng được gọi là cây thông chiều cao với gốc tại ô nếu:
- Mọi ô trong tập đều chứa ký tự
*. - Với mọi , tất cả các ô nằm trên hàng và có cột thuộc đoạn đều thuộc tập. Không ô nào khác được thuộc tập.
Nói cách khác, cây thông chiều cao là một tam giác gồm hàng liên tiếp: hàng trên cùng chỉ có đúng ô , mỗi hàng kế tiếp mở rộng thêm một ô sang trái và một ô sang phải. Toàn bộ tam giác phải nằm gọn trong bảng.
Hai cây thông được xem là khác nhau nếu chúng khác gốc hoặc khác chiều cao. Đặc biệt, một ô chứa * bất kỳ luôn là một cây thông chiều cao , và nếu tại một gốc tồn tại cây thông chiều cao thì tại gốc đó cũng tồn tại cây thông với mọi chiều cao nhỏ hơn , và tất cả đều được đếm.
Hãy đếm tổng số cây thông có trong bảng.
Dữ liệu vào
- Dòng đầu chứa số nguyên là số bộ dữ liệu.
- Với mỗi bộ dữ liệu:
- Dòng đầu chứa hai số nguyên và .
- dòng tiếp theo, mỗi dòng chứa ký tự mô tả nội dung bảng.
Dữ liệu ra
Với mỗi bộ dữ liệu, in ra trên một dòng tổng số cây thông có trong bảng tương ứng.
Ràng buộc
- là
.hoặc* - Tổng trên tất cả các bộ dữ liệu không vượt quá
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 2 2 3 .*. *** 2 3 .*. **. |
5 3 |
Bảng thứ nhất có cây thông: một cây chiều cao gốc tại , cùng bốn cây chiều cao gốc tại , , , . Bảng thứ hai chỉ có ba ô *, và gốc không lên được chiều cao vì ô là ., nên đáp án là . |
| 2 5 5 *...* **.** ***** **.** *...* 3 3 *.* ... *.* |
19 4 |
Bảng thứ nhất có ô *, trong đó đúng một gốc đạt được chiều cao là , nên tổng là . Bảng thứ hai chỉ có bốn ô * ở bốn góc và chúng rời rạc nhau, nên mỗi ô đóng góp đúng một cây thông chiều cao . |
| 1 4 5 .***. ***** ***** *.*.* |
23 | Bảng có ô *. Ngoài cây thông chiều cao , còn có bốn cây chiều cao gốc tại , , , và một cây chiều cao gốc tại , tổng cộng . |
Bình luận