POJ 2610 Dog & Gopher(水~)

470 篇文章 3 订阅

Description
一只地鼠想沿直线跑到位于点(x2,y2)的一个坑中,但是在(x1,y1)有一条狗想吃它,狗的速度是地鼠速度的两倍,如果狗比地鼠提前或者同时到达(x2,y2),地鼠就会被狗吃了,地鼠可以选一些坑作为起点,问地鼠能否成功逃脱,如果可以,输出离(x2,y2)最近的坑,如果最近距离有多个则输出首先输入的坑
Input
第一行为四个浮点数分别表示x1,y1,x2,y2,即狗的初始位置和地鼠的目标位置,之后输入多行,每行两个浮点数表示一个地鼠可以选择的初始坑,以文件尾结束输入
Output
如果地鼠从任何一个坑出发都会被狗吃掉则输出The gopher cannot escape.如果地鼠能够成功逃脱,则输出The gopher can escape through the hole at (x,y).(其中(x,y)为离(x2,y2)最近的坑,如果最近距离有多个则输出先输入的坑)
Sample Input
1.000 1.000 2.000 2.000
1.500 1.500
Sample Output
The gopher cannot escape.
Solution
简单题
Code

#include<cstdio>
#include<iostream>
#include<cmath>
using namespace std;
#define INF 0x3f3f3f3f
int main()
{
    double x1,y1,x2,y2,x3,y3;
    scanf("%lf%lf%lf%lf",&x1,&y1,&x2,&y2);
    double ans=INF,ansx,ansy,flag=0;
    while(~scanf("%lf%lf",&x3,&y3))
    {
        double d1=sqrt((x1-x3)*(x1-x3)+(y1-y3)*(y1-y3));
        double d2=sqrt((x2-x3)*(x2-x3)+(y2-y3)*(y2-y3));
        if(d1<d2/2)
        {
            flag=1;
            if(ans>d1)ans=d1,ansx=x3,ansy=y3;
        }
    }
    if(flag)printf("The gopher can escape through the hole at (%.3lf,%.3lf).\n",ansx,ansy);
    else printf("The gopher cannot escape.\n");
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值