初三奥赛模拟测试4
$ T1 $ 最后一课
题目描述
姬子正要去找 Kiana ,但在这之前,她还需要去一个地方。
在平面直角坐标系上,有一条直线 \(y=k\) ,还有两点 \(P(x_1,y_1),Q(x_2,y_2)\) 。姬子在点 P 处,Kiana 在点 Q 处 。姬子希望先走到直线 \(y=k\) 上,然后再去找 Kiana 。求姬子走到 Kiana 处所需要走的最小距离的平方。
换句话说,你需要在这条直线上找到一点 \(R\),使得 \(|PR|+|QR|\) 尽可能小,也就是最小化从 \(P\) 到 \(R\) 再到 \(Q\) 的距离。为了方便检验答案,你只需要输出这个值的平方,可以证明这个值平方后总是整数。
输入格式
一行五个整数 \(k,x_1,y_1,x_2,y_2\) ,含义如题面所述。
输出格式
一行一个自然数,表示平方后的答案。
样例输入 \(1\)
2 1 1 3 3
样例输出 \(1\)
8
样例输入 \(2\)
0 1 1 3 3
样例输出 \(2\)
20
样例输入 \(3\)
0 -100000000 -100000000 -100000000 100000000
样例输出 \(3\)
40000000000000000
样例输入 \(4\)
2 1 2 3 2
样例输出 \(4\)
4
更多样例
没有。
数据范围
对于 \(30\%\) 的数据 \(k=y_1=y_2\)
对于额外 \(30\%\) 的数据 \(|k|,|x_1|,|y_1|,|x_2|,|y_2|\leq 20\)
对于 \(100\%\) 的数据 \(|k|,|x_1|,|y_1|,|x_2|,|y_2|\leq 5\times 10^8\)
无意义水题,全场切(除了 HANGRY_Sol
大聪明快读写挂了)
小学数学秒了
CODE
#include<bits/stdc++.h>
using namespace std;
long long k,a,b,x,y,ans;
int main()
{
#ifndef ONLINE_JUDGE
freopen("1.in","r",stdin);
freopen("1.out","w",stdout);
#endif
scanf("%lld%lld%lld%lld%lld",&k,&a,&b,&x,&y);
if((b>=k&&y>=k)||(b<=k&&y<=k))
y=2*k-y,ans=(a-x)*(a-x)+(b-y)*(b-y);
else
ans=(a-x)*(a-x)+(b-y)*(b-y);
printf("%lld\n",ans);
return 0;
}
\(T2\) 日常
依旧是水题,把区间排序之后二分
标签:输出,Kiana,样例,lld%,奥赛,100000000,初三,模拟 From: https://www.cnblogs.com/hzoi-wang54321/p/18117487