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)\)点,其四周上下左右也均有波及,你每秒可以向上下左右移动一个单位,问你是否可以 ...
随机推荐
- vertx的学习总结2
一.什么是verticle verticle是vertx的基本单元,其作用就是封装用于处理事件的技术功能单元 (如果不能理解,到后面的实战就可以理解了) 二.写一个verticle 1. 引入依赖( ...
- 吉特日化MES & 再谈原料标签
在前面之前提到的标签的选择和设计,原料标签可以做到如下几点: 1 原料标签是一物一码还是一码多物:在美妆类的原料建议原料标签采用一物一码,对于大液洗之类的产品原料如果能够做到一物一码最佳,但是 ...
- 一篇可供参考的 K8S 落地实践经验
前言 k8s 即 Kubernetes,是一个开源的容器编排引擎,用来对容器化应用进行自动化部署. 扩缩和管理 本篇文章将分享 k8s v1.18.8 的安装,以及其面板,监控,部署服务,使用Ingr ...
- javaScript正则截取自定义标签-javascript-zheng-ze-jie-qu-zi-ding-yi-biao-qian
title: javaScript正则截取自定义标签 date: 2021-12-29 17:31:48.448 updated: 2021-12-29 17:31:48.448 url: https ...
- Flink实时处理入门
Flink实时处理入门 1.Flink框架介绍 Flink 诞生于欧洲的一个大数据研究项目 StratoSphere.它是由 3 所地处柏林的大学和欧洲其他一 些大学在 2010~2014 年共同进行 ...
- Unreal学习笔记1-打印输出
1. 概述 相比各种打断点调试的办法,还是更习惯使用打印输出来进行调试. 2. 详论 2.1. 代码 这里写了三个函数:分别是输出到屏幕,输出到警告日志,输出错误日志. Output.h: #prag ...
- 云图说丨初识数据工坊DWR
摘要:数据工坊DWR是一款近数据处理服务,通过易用的工作流编排和开放生态的数据处理算子,能够在云上实现图像.视频.文档.图片等数据处理业务. 本文分享自华为云社区<[云图说]第236期 初识数据 ...
- 【教程】app备案流程简单三部曲即可完成
[教程]app备案流程简单三部曲即可完成 APP备案流程包括以下步骤: 1. 开发者实名认证:在提交备案申请之前,开发者需要通过移动应用开发平台进行实名认证.这个步骤需要提供身份证号码.姓名.联系 ...
- 火山引擎智能外呼联合火山引擎VeDI升级服务,让企业精准营销不再难
企业营销模式正在经历一场巨变.数字化营销早已替代传统的营销方式,成为企业营销的主流方式和发展战略中不可或缺的部分.然而随着数字化营销的普及,市场迈入存量竞争时代,获客成本也逐年攀升.面对营销过程中不断 ...
- Error unprotecting the session cookie.The payload was invalid.
.Net Core 3.0 warn: Microsoft.AspNetCore.Session.SessionMiddleware[7] Error unprotecting the session ...