题解:P11697 [ROIR 2025] 二维蚱蜢

简单数学题,但是有些坑。

首先我们制定思路:怎样的路线才是最优路线?

显然走斜线是比较划算的,因为它相当于两次运动。

于是我们可以先走对角线,然后使用平移调整,为了方便讲述,我先给出代码:

#include<bits/stdc++.h>
using namespace std;
int n, m, k;
int main(){
    cin >> n >> m >> k;
    cout << (int)(ceil(1.0 * min(n - 1, m - 1) / k) + ceil(1.0 * (max(n, m) - min(n, m)) / k));
    return 0;
}

显然答案转换为公式如下:

\[\lceil \frac{\min(n - 1, m - 1)}{k}\rceil + \lceil \frac{\max(n, m) - min(n, m)}{k}\rceil \]

这是一个二项式,每次尽可能走 \(k\) 格,第一项即为斜角步数,第二项即为平移调整步数,比较简单,不做讲述。

问:为什么第一项的 \(n\)\(m\) 要减一?
答:因为起点在 \((1, 1)\) 而非 \((0, 0)\),画图可知仅需走 \(n - 1\) 行和 \(m - 1\) 列。

posted on   zhangzirui66  阅读(18)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示