06-图2 Saving James Bond - Easy Version (25分)

2023-12-09 12:08
文章标签 25 version 06 easy bond james saving

本文主要是介绍06-图2 Saving James Bond - Easy Version (25分),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

06-图2 Saving James Bond - Easy Version (25分)

This time let us consider the situation in the movie “Live and Let Die” in which James Bond, the world’s most famous spy, was captured by a group of drug dealers. He was sent to a small piece of land at the center of a lake filled with crocodiles. There he performed the most daring action to escape – he jumped onto the head of the nearest crocodile! Before the animal realized what was happening, James jumped again onto the next big head… Finally he reached the bank before the last crocodile could bite him (actually the stunt man was caught by the big mouth and barely escaped with his extra thick boot).

Assume that the lake is a 100 by 100 square one. Assume that the center of the lake is at (0,0) and the northeast corner at (50,50). The central island is a disk centered at (0,0) with the diameter of 15. A number of crocodiles are in the lake at various positions. Given the coordinates of each crocodile and the distance that James could jump, you must tell him whether or not he can escape.

Input Specification:

Each input file contains one test case. Each case starts with a line containing two positive integers N (≤100), the number of crocodiles, and D, the maximum distance that James could jump. Then N lines follow, each containing the (x,y) location of a crocodile. Note that no two crocodiles are staying at the same position.

Output Specification:

For each test case, print in a line “Yes” if James can escape, or “No” if not.

Sample Input 1:

14 20
25 -15
-25 28
8 49
29 15
-35 -2
5 28
27 -29
-8 -28
-20 -35
-25 -20
-13 29
-30 15
-35 40
12 12

Sample Output 1:

Yes

Sample Input 2:

4 13
-12 12
12 12
-12 -12
12 -12

Sample Output 2:

No

#include<iostream>
#include<cmath>
using namespace std;struct Node {int  x,y;int flag;
};struct MNode {int Vertex[100][100];Node t[100];
};typedef struct MNode* MGraph;
MGraph Create(int n);
int DFS(MGraph Graph,int Root,bool Visited[],int D,int N);int main() {int N,D,x,y;double num;cin>>N>>D;bool Visited[N]= {false};MGraph Graph=Create(N);for(int i=0; i<N; i++) {x=Graph->t[i].x;y=Graph->t[i].y;num=sqrt(x*x+y*y);if(num-7.5<=D)Graph->t[i].flag=1;}for(int i=0; i<N-1; i++)for(int j=i+1; j<N; j++) {x=Graph->t[i].x-Graph->t[j].x;y=Graph->t[i].y-Graph->t[j].y;num=sqrt(x*x+y*y);if(num-D<=0) {Graph->Vertex[i][j]=1;Graph->Vertex[j][i]=1;}}int count=0;for(int i=0;i<N;i++){if(Graph->t[i].flag){count+=DFS(Graph,i,Visited,D,N);}}if(count>0)printf("Yes");else printf("No");//
}MGraph Create(int n) {MGraph Graph=(MGraph)malloc(sizeof(struct MNode));for(int i=0; i<n; i++) {cin>>Graph->t[i].x>>Graph->t[i].y;Graph->t[i].flag=0;for(int j=0; j<n; j++)Graph->Vertex[i][j]=0;}return Graph;
}int DFS(MGraph Graph,int Root,bool Visited[],int D,int N) {Visited[Root]=true;int count=0;if(Graph->t[Root].x<=D-50||Graph->t[Root].x>=50-D)return 1;if(Graph->t[Root].y<=D-50||Graph->t[Root].y>=50-D)return 1;for(int i=0; i<N; i++) {if(!Visited[i]&&Graph->Vertex[Root][i]>0)count+=DFS(Graph,i,Visited,D,N);}return count;
}
#include<bits/stdc++.h>
using namespace std;
struct Node {double x, y;double distant;
};
int N;
int D, G[105][105];
Node Dist[105];
bool visit[105] = {false};void Init(int i, int j);
int DFS(int i);int main() {cin >> N >> D;int X, Y;int flag = 0;fill(G[0], G[0] + 105*105, 200);for (int i = 0; i < N; i++) {cin >> X >> Y;Dist[i].x = X;Dist[i].y = Y;Dist[i].distant = sqrt(X * X + Y * Y);}for (int i = 0; i < N - 1; i++) {for (int j = i + 1; j < N; j++) {Init(i, j);}}for (int i = 0; i < N; i++) {if (Dist[i].distant <= D + 7.5 && !visit[i]) {flag = DFS(i);if (flag == 1) {cout << "Yes";break;}}}if (!flag) cout << "No";return 0;
}void Init(int i, int j) {int x = Dist[i].x - Dist[j].x;int y = Dist[i].y - Dist[j].y;G[i][j] = G[j][i] = sqrt(x * x + y * y);
}int DFS(int i) {if ((Dist[i].x + D >= 50) || (Dist[i].x - D <= -50) || (Dist[i].y + D >= 50) || (Dist[i].y - D <= -50)) return 1;visit[i] = true;for (int j = 0; j < N; j++) {if (G[i][j] <= D && !visit[j]) {int temp = DFS(j);if (temp == 1) return 1;}}return 0;
}

这篇关于06-图2 Saving James Bond - Easy Version (25分)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/473702

相关文章

06 C++Lambda表达式

lambda表达式的定义 没有显式模版形参的lambda表达式 [捕获] 前属性 (形参列表) 说明符 异常 后属性 尾随类型 约束 {函数体} 有显式模版形参的lambda表达式 [捕获] <模版形参> 模版约束 前属性 (形参列表) 说明符 异常 后属性 尾随类型 约束 {函数体} 含义 捕获:包含零个或者多个捕获符的逗号分隔列表 模板形参:用于泛型lambda提供个模板形参的名

Maven创建项目中的groupId, artifactId, 和 version的意思

文章目录 groupIdartifactIdversionname groupId 定义:groupId 是 Maven 项目坐标的第一个部分,它通常表示项目的组织或公司的域名反转写法。例如,如果你为公司 example.com 开发软件,groupId 可能是 com.example。作用:groupId 被用来组织和分组相关的 Maven artifacts,这样可以避免

【JavaScript】LeetCode:21-25

文章目录 21 最大子数组和22 合并区间23 轮转数组24 除自身以外数组的乘积25 缺失的第一个正数 21 最大子数组和 贪心 / 动态规划贪心:连续和(count)< 0时,放弃当前起点的连续和,将下一个数作为新起点,这里提供使用贪心算法解决本题的代码。动态规划:dp[i]:以nums[i]为结尾的最长连续子序列(子数组)和。 dp[i] = max(dp[i - 1]

前端-06-eslint9大变样后,如何生成旧版本的.eslintrc.cjs配置文件

目录 问题解决办法 问题 最近在写一个vue3+ts的项目,看了尚硅谷的视频,到了配置eslintrc.cjs的时候我犯了难,因为eslint从9.0之后重大更新,跟以前完全不一样,但是我还是想用和老师一样的eslintrc.cjs文件,该怎么做呢? 视频链接:尚硅谷Vue项目实战硅谷甄选,vue3项目+TypeScript前端项目一套通关 解决办法 首先 eslint 要

LibSVM学习(六)——easy.py和grid.py的使用

我们在“LibSVM学习(一)”中,讲到libSVM有一个tools文件夹,里面包含有四个python文件,是用来对参数优选的。其中,常用到的是easy.py和grid.py两个文件。其实,网上也有相应的说明,但很不系统,下面结合本人的经验,对使用方法做个说明。        这两个文件都要用python(可以在http://www.python.org上下载到,需要安装)和绘图工具gnup

Jenkins 通过 Version Number Plugin 自动生成和管理构建的版本号

步骤 1:安装 Version Number Plugin 登录 Jenkins 的管理界面。进入 “Manage Jenkins” -> “Manage Plugins”。在 “Available” 选项卡中搜索 “Version Number Plugin”。选中并安装插件,完成后可能需要重启 Jenkins。 步骤 2:配置版本号生成 打开项目配置页面。在下方找到 “Build Env

Learn ComputeShader 09 Night version lenses

这次将要制作一个类似夜视仪的效果 第一步就是要降低图像的分辨率, 这只需要将id.xy除上一个数字然后再乘上这个数字 可以根据下图理解,很明显通过这个操作在多个像素显示了相同的颜色,并且很多像素颜色被丢失了,自然就会有降低分辨率的效果 效果: 但是这样图像太锐利了,我们加入噪声去解决这个问题 [numthreads(8, 8, 1)]void CSMain(uint3 id

C++入门(06)安装QT并快速测试体验一个简单的C++GUI项目

文章目录 1. 清华镜像源下载2. 安装3. 开始菜单上的 QT 工具4. 打开 Qt Creator5. 简单的 GUI C++ 项目5.1 打开 Qt Creator 并创建新项目5.2 设计界面5.3 添加按钮的点击事件5.4 编译并运行项目 6. 信号和槽(Signals and Slots) 这里用到了C++类与对象的很多概念 1. 清华镜像源下载 https://

F12抓包06-4:导出metersphere脚本

metersphere是一站式的开源持续测试平台,我们可以将浏览器请求导出为HAR文件,导入到metersphere,生成接口测试。 metersphere有2种导入入口(方式),导入结果不同:         1.导入到“接口定义”:自动生成接口API和单接口case(接口自动去重;每个请求生成不同case,重复的请求生成重复的case,名称自动加数字后缀,自动与接口关联)。

2025年25届计算机毕业设计:如何实现高校实验室Java SpringBoot教学管理系统

✍✍计算机毕业编程指导师** ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java、Python、微信小程序、大数据实战项目集 ⚡⚡文末获取源码 文章目录 ⚡⚡文末获取源码高校实验室教学管理系统-研究背景高校实验室教学管理系