P2895 [USACO08FEB] Meteor Shower S题解

题目

贝茜听说一场特别的流星雨即将到来:这些流星会撞向地球,并摧毁它们所撞击的任何东西。她为自己的安全感到焦虑,发誓要找到一个安全的地方(一个永远不会被流星摧毁的地方)。

如果将牧场放入一个直角坐标系中,贝茜现在的位置是原点,并且,贝茜不能踏上一块被流星砸过的土地。

根据预报,一共有M颗流星(1≤M≤50,000) 会坠落在农场上,其中第i颗流星会在时刻Ti​(0≤Ti​≤1000)砸在坐标为(Xi​,Yi​)(0≤Xi​≤300,0≤Yi​≤300) 的格子里。流星的力量会将它所在的格子,以及周围4个相邻的格子都化为焦土,当然贝茜也无法再在这些格子上行走。

贝茜在时刻0开始行动,她只能在第一象限中,平行于坐标轴行动,每1个时刻中,她能移动到相邻的(一般是4个)格子中的任意一个,当然目标格子要没有被烧焦才行。如果一个格子在时刻t被流星撞击或烧焦,那么贝茜只能在t之前的时刻在这个格子里出现。 贝茜一开始在(0,0)。

请你计算一下,贝茜最少需要多少时间才能到达一个安全的格子。如果不可能到达输出−1。

输入输出格式

输入格式

共M+1行,第1行输入一个整数M,接下来的M行每行输入三个整数分别为Xi​,Yi​,Ti​。

输出格式

贝茜到达安全地点所需的最短时间,如果不可能,则为−1。

输入输出样例

输入样例

4
0 0 2
2 1 2
1 1 2
0 3 5

输出样例

5

解析

#include<iostream>
#include<cstring>
#include<queue>
#include<climits>
using namespace std;
#define maxn 310
#define MIN(x,y,t) if(x>=0&&y>=0&&x<maxn&&y<maxn) death[x][y]=min(death[x][y],t);
struct coord{int x,y;
};
queue<coord> Q;
int ans[maxn][maxn],death[maxn][maxn];//death表示该点被流星雨砸中的时间 
int wk[4][2]={{0,1},{1,0},{-1,0},{0,-1}};
int main(){int m,Ans=INT_MAX;memset(ans,-1,sizeof(ans));memset(death,0x3f,sizeof(death));cin>>m;for(int i=1;i<=m;i++){int x,y,t;cin>>x>>y>>t;MIN(x,y,t);for(int k=0;k<4;k++){MIN(x+wk[k][0],y+wk[k][1],t);//记录下流星和上下左右影响范围烧焦的时间 }}Q.push((coord){0,0});ans[0][0]=0;while(!Q.empty()){coord u=Q.front();int ux=u.x,uy=u.y;Q.pop();for(int k=0;k<4;k++){int x=ux+wk[k][0],y=uy+wk[k][1];if(x<0||y<0||x>=maxn||y>=maxn||ans[x][y]!=-1||ans[ux][uy]+1>=death[x][y]){//注意条件摆放的位置,以防出现数组越界问题 continue;}ans[x][y]=ans[ux][uy]+1;Q.push((coord){x,y});//扩展的结点加入队列 }}for(int i=0;i<=305;i++){for(int j=0;j<=305;j++){if(death[i][j]>1000&&ans[i][j]!=-1){Ans=min(Ans,ans[i][j]);//在所有安全区域且能到达的点中找到最早的 }}}if(Ans==INT_MAX){cout<<-1;}else{cout<<Ans;}return 0;
} 

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

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

相关文章

李宏毅2023机器学习作业1--homework1——python语法

# 定义list del_col del_col [0, 38, 39, 46, 51, 56, 57, 64, 69, 74, 75, 82, 87] # 删除raw_x_train中del_col的列&#xff0c;axis为1代表删除列 raw_x_train np.delete(raw_x_train, del_col, axis1) # numpy数组增删查改方法 # 定义列表get_col get_col [35, 36, 37,…

vector 用法

C++数组是继承C语言的,C++标准库中的vector封装了动态数组,是一个模板类(vector<int>,<>里面可以是各种类型。 定义方式: vector<元素类型> 对象名(长度); (注:vector还有个好处就是,数组定义时长度那里不能包含变量,但是vector定义时长度那里可…

2.23 Qt day4 事件机制+定时器事件+键盘事件+鼠标事件

思维导图&#xff1a; 做一个闹钟&#xff0c;在行编辑器里输入定闹钟的时间&#xff0c;时间到了就语音播报文本里的内容&#xff0c;播报五次 widget.h&#xff1a; #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include<QDebug>//输出类 #include<…

B3623枚举排列

题目描述 今有 n 名学生&#xff0c;要从中选出 k 人排成一列拍照。 请按字典序输出所有可能的排列方式。 输入格式 仅一行&#xff0c;两个正整数 n,k。 输出格式 若干行&#xff0c;每行 k 个正整数&#xff0c;表示一种可能的队伍顺序。 输入输出样例 输入 #1复制 …

聚美优品根据ID取商品详情 API(jumei.item_get)

聚美优品&#xff08;Jumei&#xff09;是一个在线购物平台&#xff0c;提供化妆品、护肤品、服装、食品等多种商品。聚美优品可能有自己的API接口供开发者使用&#xff0c;以便实现与平台的数据交互。不过&#xff0c;请注意&#xff0c;聚美优品的API可能会随着时间的变化而更…

通过 NVIDIA-SMI 统计GPU使用情况

通过 NVIDIA-SMI 统计GPU使用情况 罗列本机显卡 nvidia-smi -L | --list-gpus本示例的输出如下&#xff0c;也就是本机的显卡环境&#xff1a; [namegpu4 code]$ nvidia-smi -L GPU 0: A40 (UUID: GPU-b0f3bdaa-e0e1-aff7-3cc7-9c067db6aea1)nvidia-smi -f | --filename : 将…

网络攻防之ARP欺骗和DNS劫持实验

目录 ARP单向欺骗 ARP双向欺骗 DNS劫持 实验环境&#xff1a; 攻击主机&#xff1a;kali2023虚拟机&#xff0c;IP地址为192.168.133.141 靶机&#xff1a;Windows10虚拟机&#xff0c;IP地址为192.168.133.129 网关地址&#xff1a;192.168.133.2 (1)ARP协议介绍 在以…

java多线程——线程安全同步机制同步代码块、同步机制

用多线程实现电影院三个窗口买票机制 ①同步代码块方式实现 public class MyThread extends Thread{static int sum0;//static Object objectnew Object();Overridepublic void run() {while(true){//同步代码块synchronized (MyThread.class){if(sum<100){try {Thread.sl…

唯品会vip.item_get API:第三方开发者的商品信息获取利器

唯品会&#xff08;VIP.com&#xff09;是中国的一家知名折扣电商平台&#xff0c;提供大量品牌商品的打折销售。对于第三方开发者而言&#xff0c;唯品会提供的API接口可以帮助他们集成唯品会的数据和功能&#xff0c;从而开发出自己的应用或服务。 vip.item_get API是唯品会…

maven 打包命令

Maven是基于项目对象模型(POM project object model)&#xff0c;可以通过一小段描述信息&#xff08;配置&#xff09;来管理项目的构建&#xff0c;报告和文档的软件项目管理工具。 Maven的核心功能便是合理叙述项目间的依赖关系&#xff0c;通俗点讲&#xff0c;就是通过po…

Linux 基本组件与性能优化与根目录

目录 Linux基本组件 Linux性能优化 Linux常见根目录 Linux基本组件 内核&#xff1a;操作系统的核心&#xff0c;管理硬件资源和提供基本服务。 Shell&#xff1a; 用户与系统交互的命令行界面&#xff0c;例如 Bash 或 Zsh。 文件系统&#xff1a; 组织和存储数据的方式&…

Mysql的基本SQl语句

1.DDL 数据定义语言&#xff0c;开发 针对库表对象增删改create 创库创表drop 删库删表alter 修改库表属性 案例1&#xff1a;创建一个数据库&#xff0c;需求如下&#xff1a; 1&#xff09;库名为edu 2&#xff09;字符集为utf8 CREATE DATABASE edu DEFAULT CHARAC…

代码随想录刷题笔记-Day22

1. 修剪二叉搜索树 669. 修剪二叉搜索树https://leetcode.cn/problems/trim-a-binary-search-tree/ 给你二叉搜索树的根节点 root &#xff0c;同时给定最小边界low 和最大边界 high。通过修剪二叉搜索树&#xff0c;使得所有节点的值在[low, high]中。修剪树 不应该 改变保留…

opengles 顶点坐标变换常用的矩阵(九)

文章目录 前言一、opengles 常用的模型矩阵1. 单位矩阵2. 缩放矩阵3. 位移矩阵4. 旋转矩阵二、第三方矩阵数学库1. glm1.1 ubuntu 上安装 glm 库1.2 glm 使用实例1.2.1 生成一个沿Y轴旋转45度的4x4旋转矩阵, 代码实例如下1.2.2 生成一个将物体移到到Z轴正方向坐标为5处的4x4 vi…

万界星空科技商业开源MES

一、万界星空科技商业开源MES系统概述&#xff1a; 万界星空科技免费MES、开源MES、商业开源MES、市面上最好的开源MES、MES源代码、适合二开的开源MES。 1.万界星空开源MES制造执行系统的Java开源版本。 开源mes系统包括系统管理&#xff0c;车间基础数据管理&#xff0c;计…

深度学习500问——Chapter01:数学基础

文章目录 前言 1.1 向量和矩阵 1.1.1 标量、向量、矩阵、张量之间的联系 1.1.2 张量与矩阵的区别 1.1.3 矩阵和向量相乘结果 1.1.4 向量和矩阵的范数归纳 1.1.5 如何判断一个矩阵为正定 1.2 导数和偏导数 1.2.1 导数偏导计算 1.2.2 导数和偏导数有什么区别 1.3 特征值和特征向量…

什么是边缘案例测试?如何查找并确定优先级

何为边缘情况&#xff1f; 在极端条件下发生的情况被称为边缘情况&#xff0c;有时候也叫边界情况&#xff0c;在功能、回归、单元和性能测试中都会应用。如果质量保证团队知道某项功能的最大和最小负载&#xff0c;他们就能防止这些情况发生。当用户不按照程序的预期工作流程…

gma 2.0.6 (2024.02.21) 更新日志

安装 gma 2.0.6 pip install gma2.0.6网盘下载&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1P0nmZUPMJaPEmYgixoL2QQ?pwd1pc8 提取码&#xff1a;1pc8 注意&#xff1a;此版本没有Linux版&#xff01; 编译gma的Linux虚拟机没有时间修复&#xff0c;本期Linux版继…

Go Module常用命令

Go Module常用命令TOC Go Module常用命令 go mod init #初始化go.mod go mod tidy #更新依赖文件 go mod download #下载依赖文件 go mod vendor #将依赖转移至本地的vendor文件 go mod edit #手…

ChatGPT需要什么资源?

在ChatGPT走红之后&#xff0c;国内有很多的媒体和人一下子慌了神。特别是自媒体上&#xff0c;铺天盖地的都是说“为什么中国没有诞生ChatGPT”、“美国将要爆发一场新的技术革命”之类的文章。很多的一些研究机构和企业都宣称&#xff0c;我们马上就要推出自己的ChatGPT了。还…