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)\)点,其四周上下左右也均有波及,你每秒可以向上下左右移动一个单位,问你是否可以 ...
随机推荐
- 2023年奔走的总结---吉特日化MES 项目趣事 篇一
终于又到了2023年的年末了,既有兴奋也有遗憾,兴奋的是这难熬的一年马上就要过去了,遗憾的是今年好像没有做成太多的事情.差不多180次的大交通记录,也再次刷新了奔走的记录,忙忙碌碌兜兜转转又去了不少地 ...
- Redis本地安装以及使用(详细教程)
Redis 安装 Windows 下载安装 Redis默认端口:6379 整个过程如下: 1.下载连接 https://github.com/tporadowski/redis/releases Re ...
- [ABC262E] Red and Blue Graph
Problem Statement You are given a simple undirected graph with $N$ vertices and $M$ edges. The verti ...
- vue-test4 -----插槽
<template> <!-- <Main class="cccc"/> <component-a/> --> <slot-d ...
- 校验码——循环校验码CRC,海明校验码
- 关于yolov3在训练自己数据集时容易出现的bug集合,以及解决方法
早先写了一篇关于yolov3训练自己数据集的博文Pytorch实现YOLOv3训练自己的数据集 其中很详细的介绍了如何的训练自定义的数据集合,同时呢笔者也将一些容易出现的bug写在了博文中,想着的是可 ...
- 【开源项目推荐】Apache Superset——最优秀的开源数据可视化与数据探索平台
大家好,我是独孤风. 数据可视化是数据领域一个非常重要的应用.而结合了数据可视化和数据探索功能的BI(商业智能)工具,更是被各大公司青睐.但是,由于数据可视化工具的开发成本过高,长期以来一直是商业化的 ...
- 合宙esp32 c3 micro python 固件配置(基于thonny)
首先,本文档是已经配置过其他esp32后发现合宙的配置需要修改一些地方. 为了让新手们减少掉坑成本,故做了一个图文指导. 准备工作: 1.thonny安装(不讲,自己去查教程) 2.esp32c3 m ...
- CTFHub XSS DOM跳转 WriteUp
前文:DOM反射XSS 进入网站,直接查看源代码,下面是关键代码,这里有xss漏洞: <script> var target = location.search.split("= ...
- Luogu P4592 [TJOI2018]异或 做题记录
随机跳的. 树上维护序列,显然树剖.维护异或,显然 01trie. 01trie 维护区间异或,显然可持久化一下. 看到时限很大,显然可以双 log. 于是跑一边树剖,再根据 id 暴力建一个 可持久 ...