Files
hanyixuanten 185f387b34
Check cpp / md pair / Check markdown header (push) Failing after 5s
Check cpp / md pair / analyze (push) Skipped
new file: P14041.cpp
2026-10-15 18:55:23 +08:00

68 lines
2.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# P14041 [PAIO 2025] Towers
## 题目描述
Alice 正在玩一款手机游戏,目标是通过放置炮塔来保护基地免受僵尸侵袭。游戏中的基地用一个 $N \times M$ 的矩阵表示。Alice 可以在不越界的任意格子里放置炮塔。只要每一个 $K \times K$ 的正方形区域内至少有一个炮塔,基地就被视为已受保护。请帮助 Alice 找出一种放置炮塔的方案,使她的基地得到保护。同时,由于她刚开始玩、资金有限,请输出所有可能方案中所需炮塔数量最少的那个。
### 实现说明
你需要实现如下函数:
```cpp
int32 solve(int32 N, int32 M, int32 K)
```
参数 $N, M, K$ 的含义与上文一致,函数需返回上述要求下的最小炮塔数量。
**注意**:函数在一次程序执行过程中最多会被调用多次。
## 输入格式
无(输入由评测器以函数参数传递)。
## 输出格式
直接返回 `int` 类型的最小炮塔数量。
## 说明/提示
### 示例
下图中,红色圆圈代表炮塔。
考虑调用 `solve(5, 5, 2)`。此时 $N = 5, M = 5, K = 2$,方案如下:
::::align{center}
![](https://cdn.luogu.com.cn/upload/image_hosting/85kgzr3z.png?x-oss-process=image/resize,m_lfit,h_200)
::::
考虑调用 `solve(7, 8, 3)`。此时 $N = 7, M = 8, K = 3$,方案如下:
::::align{center}
![](https://cdn.luogu.com.cn/upload/image_hosting/w010zocx.png?x-oss-process=image/resize,m_lfit,h_200)
::::
考虑调用 `solve(4, 4, 1)`。此时 $N = M = 4, K = 1$,方案如下:
::::align{center}
![](https://cdn.luogu.com.cn/upload/image_hosting/yz3aumpi.png?x-oss-process=image/resize,m_lfit,h_200)
::::
### 样例评测器
样例评测器会先读入 $T$(调用 `solve` 的次数),接下来 $T$ 行每行给出一组 $N, M, K$,每次调用一次 `solve`。然后输出每次调用 `solve` 的返回值,一行一个。示例输入输出均按此格式出现。
### 数据范围
* $1 \leq N, M \leq 50$。
* $1 \leq K \leq \min(N, M)$。
* 单次程序执行过程中,最多会调用 $5\times10^4$ 次该函数。
### 评分规则
1. 子任务 $1$($8$ 分):$K=1$。
2. 子任务 $2$($27$ 分):$K=2$。
3. 子任务 $3$($31$ 分):$N = M$ 且 $K$ 整除 $N$。
4. 子任务 $4$($34$ 分):无额外限制。
由 ChatGPT 5 翻译