浙大数据结构:06-图2 Saving James Bond - Easy Version

news2024/9/27 13:02:05
这道题是稍复杂版的dfs或bfs,此处我采用bfs实现
机翻:

1、条件准备

n为鳄鱼数量,jump为跳一次最大距离。
eyu数组对存每条鳄鱼的坐标位置,visit数组判断该鳄鱼是否走过,isalive判断到达该鳄鱼时能否逃离。
#include <iostream>
using namespace std;

int n, jump;
pair<int, int> eyu[10010];
bool visit[10005];
bool isalive[10005];
输入鳄鱼数量,跳跃最大距离。然后循环输入每条鳄鱼位置。
这里我加上偏置,使得坐标都为正数,存入进来。
如果坐标到岸边距离小于跳跃距离,那么该鳄鱼标记为1.
然后我们专门新开一条鳄鱼作为起始位置,也就是岛中心。
然后bfs一下,如果能逃出则输出Yes,不能则输出No。
int main()
{
  ios::sync_with_stdio(false);
  cin.tie(0), cout.tie(0);
  cin >> n >> jump;
  for (int i = 0; i < n; i++)
  {
    int a, b;
    cin >> a >> b;
    a += 50, b += 50;
    eyu[i].first = a, eyu[i].second = b;
    if (a <= jump || 100 - a <= jump || b <= jump || 100 - b <= jump)
      isalive[i] = 1;
  }
  eyu[10005].first = 50, eyu[10005].second = 50;

  if (bfs())
  {
    cout << "Yes";
    return 0;
  };
  cout << "No";
  return 0;
}

2、isjump函数

这个函数是判断从第a头鳄鱼到第b头鳄鱼之间距离是否小于dis
其实就是算两点之间距离再比较即可。
abs函数是取绝对值
bool isjump(int a, int b, int dis)
{
  int x = abs(eyu[a].first - eyu[b].first);
  int y = abs(eyu[a].second - eyu[b].second);
  if (x * x + y * y <= dis * dis)return 1;
  return 0;
}

3、bfs函数

还是用数组模拟队列,先单独处理一下起始位置能跳到的鳄鱼,都放进队列里,注意加上岛中间半径15,访问过visit置1
然后取队头,直到队列为空,然后扫描鳄鱼,看该鳄鱼能否跳到其它鳄鱼,能就放入队列。
如果跳到了鳄鱼是可逃离鳄鱼则返回1
int bfs()
{
  int q[20005], tt = -1, hh = 0;
  for (int i = 0; i < n; i++)
  {
    if (!visit[i] && isjump(10005, i, jump + 15))
    {
      q[++tt] = i;
      visit[i] = 1;
      if (isalive[i])  return 1;
    }
  }

  while (hh <= tt)
  {
    int cur = q[hh++];
    for (int i = 0; i < n; i++)
    {
      if (!visit[i] && isjump(cur, i, jump))
      {
        visit[i] = 1;
        q[++tt] = i;
        if (isalive[i])  return 1;
      }
    }
  }
  return 0;
}

4、总结

这道题理解题意稍微难一点,代码并不难。
完整代码如下:
#include <iostream>
using namespace std;

int n, jump;
pair<int, int> eyu[10010];
bool visit[10005];
bool isalive[10005];

bool isjump(int a, int b, int dis)
{
  int x = abs(eyu[a].first - eyu[b].first);
  int y = abs(eyu[a].second - eyu[b].second);
  if (x * x + y * y <= dis * dis)return 1;
  return 0;
}

int bfs()
{
  int q[20005], tt = -1, hh = 0;
  for (int i = 0; i < n; i++)
  {
    if (!visit[i] && isjump(10005, i, jump + 15))
    {
      q[++tt] = i;
      visit[i] = 1;
      if (isalive[i])  return 1;
    }
  }

  while (hh <= tt)
  {
    int cur = q[hh++];
    for (int i = 0; i < n; i++)
    {
      if (!visit[i] && isjump(cur, i, jump))
      {
        visit[i] = 1;
        q[++tt] = i;
        if (isalive[i])  return 1;
      }
    }
  }
  return 0;
}

int main()
{
  ios::sync_with_stdio(false);
  cin.tie(0), cout.tie(0);
  cin >> n >> jump;
  for (int i = 0; i < n; i++)
  {
    int a, b;
    cin >> a >> b;
    a += 50, b += 50;
    eyu[i].first = a, eyu[i].second = b;
    if (a <= jump || 100 - a <= jump || b <= jump || 100 - b <= jump)
      isalive[i] = 1;
  }
  eyu[10005].first = 50, eyu[10005].second = 50;

  if (bfs())
  {
    cout << "Yes";
    return 0;
  };
  cout << "No";
  return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2170062.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

探索图像生成大模型Imagen:原理、比较与应用

目录 目录 1. 引言 2. 图像生成模型的发展背景 2.1 生成对抗网络&#xff08;GAN&#xff09; 2.2 变分自编码器&#xff08;VAE&#xff09; 2.3 自回归模型 2.4 扩散模型 3. Imagen简介 3.1 模型架构 3.2 关键技术 3.3 训练数据与方法 4. Imagen与其他模型的比较 …

ArcGIS Pro高级地图可视化—双变量符号地图

ArcGIS Pro高级地图可视化 ——双变量符号地图 1 背景 “我不是双变量&#xff0c;但我很好奇。”出自2013 年南卡罗来纳州格林维尔举行的 NACIS 会议上&#xff0c;双变量地图随着这句俏皮的话便跳跃在人们的视角下&#xff0c;在讨论二元映射之后&#xff0c;它不仅恰逢其…

AOT源码解析4.5-AOT整体结构

论文阅读 papergithub论文阅读笔记AOT源码解析1-数据集处理AOT源码解析2-encoderdecoderAOT源码解析3-模型训练AOT源码解析4.1-model主体AOT源码解析4.2-model主体AOT源码解析4.3-model主体AOT源码解析4.4-model主体AOT源码解析4.5-model主体 4.1~4.4小节详细讲解了ref_imgs相…

15年408-数据结构

第一题 解析&#xff1a; 栈第一次应该存main的信息。 然后进入到main里面&#xff0c;要输出S(1)&#xff0c;将S(1)存入栈内&#xff0c; 进入到S(1)中&#xff0c;1>0,所以还要调用S(0) S(0)进入栈中&#xff0c;此时栈内从下至上依次是main(),S(1),S(0) 答案选A 第二题&…

Java基于相似算法实现以图搜图

一、简述 本文主要讲如何利用图片相似性算法&#xff0c;基于LIRE来实现图片搜索。 二、依赖 <dependencies><!-- https://mvnrepository.com/artifact/org.apache.lucene/lucene-core --><dependency><groupId>org.apache.lucene</groupId><…

Apache Solr:深入探索与常见误区解析

Apache Solr&#xff1a;深入探索与常见误区解析 Apache Solr 是一个强大的搜索引擎&#xff0c;基于 Lucene 构建&#xff0c;广泛应用于电商平台、日志分析、内容管理系统等领域。Solr 的功能强大&#xff0c;然而它的配置和使用过程却不乏一些容易误解和出错的地方。本文将…

Spring validation校验框架

第1步&#xff1a;导入依赖 <!-- 校验框架--> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId> </dependency> 第2步&#xff1a;为需要校验的参数&…

Leetcode 739.42. 每日温度 接雨水 单调栈 C++实现

问题&#xff1a;Leetcode 739. 每日温度 算法1&#xff1a;从右到左 栈中记录下一个更大元素的「候选项」。 代码&#xff1a; class Solution { public:vector<int> dailyTemperatures(vector<int>& temperatures) {int n temperatures.size();vector<…

【echarts】报错series.render is required.

总结&#xff1a;就是echarts无法保存renderItem函数到json里&#xff0c;因为renderItem是个封装方法&#xff0c;因此需要初始化加载时重新插入renderItem即可 1.描述&#xff1a;控制台报错series.render is required. 原数据json如下&#xff1a; {type: "bar"…

【数学分析笔记】第3章第4节闭区间上的连续函数(2)

3. 函数极限与连续函数 3.4 闭区间上的连续函数 3.4.4 中间值定理 【定理3.4.4】若 f ( x ) f(x) f(x)在 [ a , b ] [a,b] [a,b]上连续&#xff0c;则它一定能取到最大值 M M M与最小值 m m m之间的任何一个值。 M max ⁡ f ( x ) , x ∈ [ a , b ] , m min ⁡ f ( x ) , …

Vmware 静态ip配置

虚拟机网络设置NAT 查看当前的网络接口 ip addr编辑网络接口配置文件 sudo vi /etc/sysconfig/network-scripts/ifcfg-<接口名>配置静态 IP 地址 Vmware ➡ 编辑 ➡ 虚拟网络编辑器 ➡ Nat设置 参考上图进行配置&#xff0c;千万不要配置宿主机的配置 BOOTPROTOstat…

2023_Spark_实验十一:RDD基础算子操作

一、RDD的练习可以使用两种方式 使用Shell使用IDEA 二、使用Shell练习RDD 当你打开 Spark 的交互式命令行界面&#xff08;也就是 Spark shell&#xff09;的时候&#xff0c;它已经自动为你准备好了一个叫做 sc 的特殊对象&#xff0c;这个对象是用来和 Spark 集群沟通的。你…

女性在网络安全行业崛起,引领行业新风向

1、网络安全自诞生之日起&#xff0c;就与女性有着不解之缘。 ●二战期间&#xff0c;美国雇佣了1万名女性作为“密码女孩”来破译日本人和德国人发送的密信。 ●英国同样雇用了7000多名女性在英国密码分析中心工作&#xff0c;约占全部工作人员的四分之三。 ●世界上的第一…

108.游戏安全项目:信息显示二-剑侠情缘基址分析

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 内容参考于&#xff1a;易道云信息技术研究院 本人写的内容纯属胡编乱造&#xff0c;全都是合成造假&#xff0c;仅仅只是为了娱乐&#xff0c;请不要盲目相信…

spring-boot web + vue

依赖的软件 maven 1. 官网下载zip 文件&#xff0c;比如apache-maven-3.9.9-bin.zip 2. 解压到某个盘符&#xff0c;必须保证父亲目录的名字包含英文&#xff0c;数字&#xff0c;破折号&#xff08;-&#xff09; 3. 设置环境变量M2_HOME, 并将%M2_HOME%\bin添加到windown…

openpnp - 散料飞达不要想着做万能版本,能够贴合现有的物料就好

文章目录 openpnp - 散料飞达不要想着做万能版本&#xff0c;能够贴合现有的物料就好概述笔记天真的版本改进的版本物料编带标准物料编带的样式对于散料飞达关心的尺寸不同编带宽度的散料飞达关键尺寸的列表8mm物料编带12mm物料编带16mm物料编带24mm物料编带32mm物料编带44mm物…

【Linux】环境变量(初步认识环境变量)

文章目录 1. 环境变量1.1 基本概念 2. 认识常见环境变量2.1 PATH2.2 HOME2.3 SHELL2.4 PWD2.5 USER 3. 理解环境变量 1. 环境变量 在main函数的命令行参数中&#xff0c;有argc、argv、env三个参数。 argc&#xff1a;命令函参数的个数argc&#xff1a;存放每个参数的具体数值…

FPGA学习(1)-mux2,2选1多路器

目录 1 开发板配套资料 1.1学习网址和资料网址 2.创建工程文件 2.1创建过程 2.2写程序及仿真测试 2.2.1 写程序生成电路 2.2.2仿真 2.2.3 生成执行文件并烧录 3.实验现象 买的小梅哥店铺的开发板&#xff1a;xc7z020clg400 看的小梅哥的视频&#xff1a;03C _基于ZYN…

提取出散射矩阵归一化相位的含义

散射矩阵的值是从图像中获得的&#xff0c;相位角是距离导致的&#xff0c;所以要归一化&#xff0c;VV/HH VV幅度/HH幅度。 VV相位-HH相位

Java-数据结构-Map与Set-(一) ٩(๑>◡<๑)۶

文本目录&#xff1a; ❄️一、搜索树&#xff1a; ☑ 1、概念&#xff1a; ☑ 2、操作-插入&#xff1a; 代码&#xff1a; ☑ 3、操作-查看&#xff1a; 代码&#xff1a; ☑ 4、操作-删除&#xff1a; 代码&#xff1a; ☑ 5、性能分析&#xff1a; ❄️二、搜索&#…