From 185f387b349e56a93a7098eb5421f2342fbc8c2e Mon Sep 17 00:00:00 2001 From: hanyixuanten <105723997+hanyixuanten@users.noreply.github.com> Date: Thu, 15 Oct 2026 18:55:23 +0800 Subject: [PATCH] new file: P14041.cpp --- P14041.cpp | 3 +++ P14041.md | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 71 insertions(+) create mode 100644 P14041.cpp create mode 100644 P14041.md diff --git a/P14041.cpp b/P14041.cpp new file mode 100644 index 0000000..4ef5984 --- /dev/null +++ b/P14041.cpp @@ -0,0 +1,3 @@ +#include +#define int32 int32_t +int32 solve(int32 N, int32 M, int32 K) { return (N / K) * (M / K); } \ No newline at end of file diff --git a/P14041.md b/P14041.md new file mode 100644 index 0000000..0d9b2df --- /dev/null +++ b/P14041.md @@ -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 翻译 \ No newline at end of file