P2895
本题用时:01:44:20.
算法:BFS
期间固然去逛了逛淘宝买了两个东西,但毕竟还是太久了。我因为忘记判断是否出界而浪费了好多时间,后来才半天想起来,这便是用了这么长时间的原因。
之后提交代码只有六十多分,剩下的点TLE了,我马上反应过来是没判重,赶紧加了个判重。在这里,我没加判重是失误,但立刻能想起来判重而不是继续浪费好多时间才想起来也是一种进步了,希望下次能直接加上判重,不要吝啬判重需要的一点小空间。
Code
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <string>
#include <queue>
using namespace std;
struct meteor
{
int x,y,t;
};
meteor V[50005];
struct pt
{
int x,y,t;
pt(int X,int Y,int T){x=X;y=Y;t=T;}
};//pt和meteor是相同的类,但是代表不同的含义,所以分别定义能让代码更加清晰.当然了,类继承能让代码更简洁,但这里就不用了
queue<pt> q;
int M,p,m[305][305],n[305][305],gone[305][305],b[1005];
const int movex[5]={0,0,0,1,-1},
movey[5]={0,1,-1,0,0};
bool cmp(meteor A,meteor B){return A.t<B.t;}
int main()
{
cin>>M;
for(int i=0;i<M;i++)
{
cin>>V[i].x>>V[i].y>>V[i].t;
for(int j=0;j<=4;j++)
if(V[i].x+movex[j]>=0&&V[i].x+movex[j]<M
&&V[i].y+movey[j]>=0&&V[i].y+movey[j]<M)
m[V[i].x+movex[j]][V[i].y+movey[j]]=1;
}
sort(V,V+M,cmp);
q.push(pt(0,0,0));
while(!q.empty())
{
pt tpt=q.front();q.pop();
if(gone[tpt.x][tpt.y]==1)continue;
gone[tpt.x][tpt.y]=1;
if(m[tpt.x][tpt.y]==0)
{
cout<<tpt.t<<endl;
return 0;
}
if(b[tpt.t]==0)
for(b[tpt.t]=1;V[p].t<=tpt.t+1;p++)
for(int j=0;j<=4;j++)
if(V[p].x+movex[j]>=0&&V[p].x+movex[j]<M
&&V[p].y+movey[j]>=0&&V[p].y+movey[j]<M)
n[V[p].x+movex[j]][V[p].y+movey[j]]=1;
for(int j=1;j<=4;j++)
if(tpt.x+movex[j]>=0&&tpt.x+movex[j]<M&&tpt.y+movey[j]>=0&&tpt.y+movey[j]<M
&&n[tpt.x+movex[j]][tpt.y+movey[j]]==0&&gone[tpt.x+movex[j]][tpt.y+movey[j]]==0)
q.push(pt(tpt.x+movex[j],tpt.y+movey[j],tpt.t+1));
}
cout<<-1<<endl;
return 0;
}
P2895的更多相关文章
- bzoj1611 / P2895 [USACO08FEB]流星雨Meteor Shower
P2895 [USACO08FEB]流星雨Meteor Shower 给每个点标记一下能够走的最迟时间,蓝后bfs处理一下 #include<iostream> #include<c ...
- 洛谷—— P2895 [USACO08FEB]流星雨Meteor Shower
P2895 [USACO08FEB]流星雨Meteor Shower 题目描述 Bessie hears that an extraordinary meteor shower is coming; ...
- P2895 [USACO08FEB]流星雨Meteor Shower
传送门 预处理出每个位置最早被摧毁的时间,在此之前都可以走 直接dfs加个记忆化和最优性剪枝就好了 一定要注意流星的边界,如果波及到负数坐标的位置不要去考虑会RE 一定要考虑流星砸到边界的情况 如 ( ...
- 洛谷P2895 [USACO08FEB]流星雨Meteor Shower
题目描述 Bessie hears that an extraordinary meteor shower is coming; reports say that these meteors will ...
- 洛谷 P2895 [USACO08FEB]流星雨Meteor Shower 解题报告
一起来看流星雨吧(话说我还没看到过流星雨呢) 题目 Problem 小A则听说另一个骇人听闻的消息: 一场流星雨即将袭击整个霸中,由于流星体积过大,它们无法在撞击到地面前燃烧殆尽,届时将会对它撞到的一 ...
- 洛谷 P2895 [USACO08FEB]流星雨Meteor Shower
题目描述 Bessie hears that an extraordinary meteor shower is coming; reports say that these meteors will ...
- 洛谷 P2895 [USACO08FEB]Meteor Shower S (BFS)
题意:你刚开始位于坐标轴的\((0,0)\)点,一共有\(m\)颗流星砸向地面,每颗流星在\(t\)时砸到\((x,y)\)点,其四周上下左右也均有波及,你每秒可以向上下左右移动一个单位,问你是否可以 ...
随机推荐
- ij社区版如何创建spring项目
他们说是使用spring init什么什么的,那个都是老版的名称了,你去插件里面搜找是肯定搜不到的,现在叫spring boot helper,用这个,安装一下就好了(注意本次是在2022/11/1 ...
- Feign源码解析:初始化过程(一)
前言 打算系统分析下Feign的代码,上一篇讲了下Feign的历史,本篇的话,先讲下Feign相关的beanDefinition,beanDefinition就是bean的设计图,bean都是按照be ...
- Logistics Regression (对数几率回归)及numpy实现
Logistics Regression 我们知道线性回归模型可以处理回归问题,但是如何处理分类问题? 对于一个二分类问题,或许我们可以认为w*x+b > 0为正类,其他情况为负类. 那么模型不 ...
- c语言指针数组和数组指针
1 #include<stdio.h> 2 #include<iostream> 3 using namespace std; 4 int main(){ 5 int a[2] ...
- 【笔记整理】[案例]爱词霸翻译post请求
import json if __name__ == '__main__': import requests resp = requests.post( url="http://ifanyi ...
- 数字孪生为何开始逐渐与GIS进行融合?
近年来,数字孪生技术和地理信息系统(GIS)在各自领域的快速发展引起了广泛关注.这两个技术的结合被认为是一种强大的联合,可以为各行各业带来革命性的变革和创新.那么,为何数字孪生开始逐渐与GIS进行融合 ...
- Javascript Ajax总结——HTTP头部信息
每个HTTP请求和响应都会带有相应的头部信息,其中有的对开发人员有用,有的没用.XHR对象也提供了操作这两种头部(即请求头部和响应头部)信息的方法.默认情况下,在发送XHR请求的同时,还会发送下列头部 ...
- MySQL 数据目录
MySQL 的数据目录 1. MySQL 的主要目录结构 方式1:通过命令搜索 find / -name mysql 方式2(推荐):通过查看配置文件获取目录结构 vim /etc/my.cnf (重 ...
- HTTP 代理服务器的设计与实现(C++)
实验内容 设计并实现一个基本 HTTP 代理服务器.要求在指定端口(例如 8080)接收来自客户的 HTTP 请求并且根据其中的 URL 地址访问该地址 所指向的 HTTP 服务器(原服务器),接收 ...
- javacv实现屏幕录制(一)
javacv实现屏幕录制(一) javacv从入门到入土系列,发现了个好玩的东西,视频处理,于是我想搞个屏幕录屏,我百度了一下,copy那些代码我没有实现过,那些代码也没有说明,只好去官网看文档找资料 ...