1 条题解
-
0
自动搬运
来自洛谷,原作者为

Rubidium_Chloride
No, I can't.搬运于
2025-08-24 22:16:47,当前版本为作者最后更新于2020-02-03 23:26:00,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
这是本人写的第一篇题解,有什么不足还请大家见谅
进博客食用更佳呦!
0.前情提要
重制版,修了一下 之类的内容。
1.题目大意
首先我们来概括一下题意:
输入两个数 ,以及一个半径 ,表示目的地的坐标和投掷的范围。
2.处理1
为了解决这个比较简单的问题,我们需要有一些数学的头脑。
注意题目中 “而且他们必须要传送后移动到杀老师的位置才能攻击它” 一句,表明他们必须使用传送器。
两点之间直线最短。
所以我们可以顺其自然地想到要朝杀老师的方向投掷传送器!!
证明:
首先建立平面直角坐标系 ,先算出杀老师(位于 点)到学生们(位于 点)的欧几里得距离()以及杀老师与学生的连线与 轴的夹角 ,记朝 方向掷出的传送器会将同学们传送至 点,既证 这段距离最短(尽管 是传送的,但也相当于走过了,纳入计算)。
接下来分两种情况讨论:
如果 :
若掷出传送器的角度 :
则会将同学们传送至与 不同的点 ,学生们需要再从 走到 ,总路程为 。
因为三角形两边之和大于第三边,所以
所以朝着 方向扔是最有利的。
如果 ,此时传送器会将学生们传送至更远的地方了。
若掷出传送器的角度 。
则会将同学们传送至与 不同的点 ,学生们需要再从 走到 ,总路程还是为 。
连接 ,令 ,。
因为 ,所以,
所以 。
运用正弦定理,可得 。
因为 ,且 ,
所以 。
综上,证毕。
3.处理2
在一大段的证明后,我们解决了本题的第一小问,接下来我们处理第二小问。
我们要研究的就是在单位圆意义下, 到底代表什么?
答:(纵坐标/横坐标)。
证明:令由原点引出的一条射线交单位圆于 ,与 轴正半轴夹角为 。
则 。
。
4.处理3
本部分主要集中处理一些易错点。
- 上节说过了,,但是我们需要求的并不是。
答案应该是 ,所以答案是 !
- 题目提示里有 无意义,输出
ERROR,想必神仙们你都注意到了,但是,这个点并不是要说这个,而是要说一组特殊的数据。
0 0 1你的程序输出是什么?
是
2.000000 ERROR吗?
那你就错了,正确的输出应该是:
2.000000 0.00(解释:此时可以向任意方向投掷传送器,所以向 轴正半轴方向投掷所得 ,最小。)
5.CODE
(对于各位大佬来说,我的代码可能不太美观,还请大佬们原谅。)
#include<bits/stdc++.h> using namespace std; typedef long long ll; double x,y,r;double dis; int main(){ cin>>x>>y>>r; dis=abs(sqrt(x*x+y*y)-2*r); cout<<fixed<<setprecision(6)<<dis<<endl; if(y==0&&x==0) cout<<fixed<<setprecision(2)<<0.00<<endl; else if(y==0) cout<<"Error"<<endl; else cout<<fixed<<setprecision(2)<<abs(x/y)<<endl; return 0; }
- 1
信息
- ID
- 4919
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 2
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者