PIPOJ 最短距离
题目描述
小王和小明是好朋友,两人最开始各有一个初始位置 p 和一个恒定速度 v,从0时刻起开始,他们从初始位置以恒定速度开始行走,请告诉我行走过程中两人的最短距离是多少。
输入
第一行输入T代表测试样例数目。
对于每个样例,
第一行包含四个整数 x1,y1,x2,y2,表示人的起点(x1,y1),(x2,y2)。
第二行是四个整数u1,v1,u2,v2,表示人的初始速度(u1,v1),(u2,v2)(分别为x轴和y轴方向的分速度)。
T <= 1000 , x1,y1,x2,y2,u1,v1,u2,v2的绝对值不大于1000。
对于每个样例,
第一行包含四个整数 x1,y1,x2,y2,表示人的起点(x1,y1),(x2,y2)。
第二行是四个整数u1,v1,u2,v2,表示人的初始速度(u1,v1),(u2,v2)(分别为x轴和y轴方向的分速度)。
T <= 1000 , x1,y1,x2,y2,u1,v1,u2,v2的绝对值不大于1000。
输出
对于每个样例,输出一行。"Case i: d"。i 代表案例编号,d代表答案,四舍五入到小数点后6位。
样例输入
5
1 1 2 2
1 1 2 2
1 1 2 2
1 1 -1 -1
1 1 2 2
0 1 0 -1
1 1 1 1
1 1 2 2
0 0 0 1
0 1 1 0
样例输出
Case 1: 1.414214
Case 2: 0.000000
Case 3: 1.000000
Case 4: 0.000000
Case 5: 0.707107
#include<bits/stdc++.h> using namespace std; int main(){ int n; double x1,x2,y1,y2,u1,u2,v1,v2; cin>>n; int i=1; double ans=0; while(n--){ cin>>x1>>y1>>x2>>y2; cin>>u1>>v1>>u2>>v2; double a=x1-x2,b=u1-u2,c=y1-y2,d=v1-v2; double x=-(a*b+c*d)/(pow(b,2)+pow(d,2)); if(x<=0||(b==0&&d==0)) ans=pow(a,2)+pow(c,2); else{ x1+=u1*x,x2+=u2*x; y1+=v1*x,y2+=v2*x; ans=pow(x2-x1,2)+pow(y2-y1,2); } printf("Case %d: %.6lf\n",i++,sqrt(ans)); } return 0; }
参考链接:(7条消息) 1025-最短距离(中南大学18年研究生复试机试题)_Super-Child的博客-CSDN博客 (7条消息) 中南大学复试上机:最短路径_yuehailin的博客-CSDN博客
题目链接:PIPIOJ
本文来自博客园,作者:弈星,转载请注明原文链接:https://www.cnblogs.com/8023yyl/p/17047879.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
2022-01-12 蓝桥杯 棋盘放麦子