new file: P14041.cpp
Check cpp / md pair / Check markdown header (push) Failing after 5s
Check cpp / md pair / analyze (push) Skipped

This commit is contained in:
hanyixuanten committed 2026-10-15 18:55:23 +08:00
1 parent 4dc6b0f8f4
commit 185f387b34
2 files changed
+71

No files matched your search

+3
View File
@@ -0,0 +1,3 @@
#include <bits/stdc++.h>
#define int32 int32_t
int32 solve(int32 N, int32 M, int32 K) { return (N / K) * (M / K); }
+68
View File
@@ -0,0 +1,68 @@
# 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 翻译