007被毒贩抓到一个鳄鱼池中心的小岛上,他用了一种极为大胆的方法逃脱 —— 直接踩着池子里一系列鳄鱼的大脑袋跳上岸去!设鳄鱼池是长宽为100米的方形,中心坐标为 (0, 0),且东北角坐标为 (50, 50)。池心岛是以 (0, 0) 为圆心、直径15米的圆。给定池中分布的鳄鱼的坐标、以及007一次能跳跃的最大距离,你需要告诉他是否有可能逃出生天。输入格式:首先第一行给出两个正整数:鳄鱼数量 N(≤100)和007一次能跳跃的最大距离 D。随后 N 行,每行给出一条鳄鱼的 (x,y) 坐标。注意:不会有两条鳄鱼待在同一个点上。输出格式:如果007有可能逃脱,就在一行中输出"Yes",否则输出"No"。输入样例 1:14 2025 -15-25 288 4929 15-35 -25 2827 -29-8 -28-20 -35-25 -20-13 29-30 15-35 4012 12输出样例 1:Yes输入样例 2:4 13-12 1212 12-12 -1212 -12输出样例 2:No
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e2+5;
double d;
int x[maxn],y[maxn],n,visite[maxn][maxn],flag=0;
void def(int a,int b){if(a+d>=100||b+d>=100||a-d<=0||b-d<=0){flag=1;return;}visite[a][b]=1;for(int i=0;i<n;i++){double dx=a-x[i];double dy=b-y[i];if((sqrt(pow(dx,2)+pow(dy,2))<=d)&&!visite[x[i]][y[i]])def(x[i],y[i]);}visite[a][b]=0;return;
}
int main(){int a,b;cin>>n>>d;for(int i=0;i<n;i++){cin>>a>>b;x[i]=a+50,y[i]=b+50;}if(d>=42.5) {cout<<"YESn";return 0;}for(int i=0;i<n;i++){if(sqrt(pow(x[i]-50,2)+pow(y[i]-50,2))<=d+7.5){def(x[i],y[i]);}}if(flag)cout<<"Yesn";else cout<<"Non";return 0;
}
本文发布于:2024-01-29 02:02:21,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170646494411925.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |