专栏文章
P12130 [蓝桥杯 2025 省 B] 移动距离 题解
P12130题解参与者 1已保存评论 1
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @mipl3kfg
- 此快照首次捕获于
- 2025/12/03 13:46 3 个月前
- 此快照最后确认于
- 2025/12/03 13:46 3 个月前
题目传送门
题意
从 到 ,只允许水平向右移动或以原点为中心旋转,求最短路至整数。
思路
本题可以证明,只回头一次一定不劣(证明放在下面了)。
准确来说,回头几次都无所谓,但是一次好算啊!
所以,我们可以先求 x 轴上距离(就是我们第一次要走的),再走弧即可到达。
准确来说,回头几次都无所谓,但是一次好算啊!
所以,我们可以先求 x 轴上距离(就是我们第一次要走的),再走弧即可到达。
对结论的证明:
首先,初始位置在原点,第一步只能是水平移动(圆周移动需半径非零)。水平移动到目标点所在圆后,沿圆周移动是唯一直接到达的方式。
其次,若尝试先水平移动到更小半径再圆周移动,需额外水平移动调整,总距离反而更长。例如,水平移动至较小半径 r,再圆周移动至某点后水平移动,计算表明总距离必然超过结论距离。
最后,通过数学验证,水平移动到 R 后沿圆周移动的总距离为最小值。其他组合方式(如多次交替移动)会引入冗余路径,无法更优。
那么,我们把这个题分成两部分:
1.计算水平方向上要走的距离
可以看出这个距离就是原点到坐标 的距离。
根据勾股定理,可得距离 D 为:
根据勾股定理,可得距离 D 为:
。
2.计算弧的长度
根据弧的长度公式,弧长
。
问题来了, (圆周角)是多大?
这时反三角函数就登场了!
这时反三角函数就登场了!
是反正切,这里贴上百度对反正切的定义:
arctan的定义
arctan是Arctangent的缩写,指反正切函数,它是数学术语,属于反三角函数之一,是正切函数 的反函数。简单来说,它是一种求逆的运算,就如同乘法的逆运算是除法一样。
综上,我们可以算出,
。
带入公式,得弧长
。
总长 。
这里取整 。
这里取整 。
代码:
CPP#include<iostream>
int main(){
std::cout<<"1576";
}
update
其实这题用 也可以做,还有泰勒展开。
如果都不会, 无限逼近也可以。
如果都不会, 无限逼近也可以。
相关推荐
评论
共 1 条评论,欢迎与作者交流。
正在加载评论...