bzoj1611[Usaco2008 Feb]Meteor Shower流星雨*

bzoj1611[Usaco2008 Feb]Meteor Shower流星雨

题意:

给个网格,有m个流星,每个流星在ti时刻打在(xi,yi)的格子上,并把该格子和相邻的格子打烂。有个人从(0,0)出发,问最短逃离时间(格子被打烂之后就不能走)。

题解:

bfs一发,如果某格子被打烂的时间小于到达时间则不能到达,最后如果到达打烂时间为正无穷的格子即为成功逃出。注意网格的边界应该大于流星的边界,因为如果逃到那些地方也算安全地带。

代码:

 1 #include <cstdio>
 2 #include <cstring>
 3 #include <algorithm>
 4 #include <queue>
 5 #define inc(i,j,k) for(int i=j;i<=k;i++)
 6 #define maxn 500
 7 #define INF 0x3fffffff
 8 using namespace std;
 9
10 inline int read(){
11     char ch=getchar(); int f=1,x=0;
12     while(ch<‘0‘||ch>‘9‘){if(ch==‘-‘)f=-1; ch=getchar();}
13     while(ch>=‘0‘&&ch<=‘9‘)x=x*10+ch-‘0‘,ch=getchar();
14     return f*x;
15 }
16 int m,vis[maxn][maxn],ear[maxn][maxn]; queue<pair<int,int> >q;
17 int bfs(){
18     q.push(make_pair(1,1)); if(!ear[1][1])return -1;
19     while(!q.empty()){
20         int x=q.front().first,y=q.front().second; q.pop();
21         if(x>1&&!vis[x-1][y]&&ear[x-1][y]>vis[x][y]+1){
22             vis[x-1][y]=vis[x][y]+1; if(ear[x-1][y]==INF)return vis[x-1][y]; q.push(make_pair(x-1,y));
23         }
24         if(!vis[x+1][y]&&ear[x+1][y]>vis[x][y]+1){
25             vis[x+1][y]=vis[x][y]+1; if(ear[x+1][y]==INF)return vis[x+1][y]; q.push(make_pair(x+1,y));
26         }
27         if(y>1&&!vis[x][y-1]&&ear[x][y-1]>vis[x][y]+1){
28             vis[x][y-1]=vis[x][y]+1; if(ear[x][y-1]==INF)return vis[x][y-1]; q.push(make_pair(x,y-1));
29         }
30         if(!vis[x][y+1]&&ear[x][y+1]>vis[x][y]+1){
31             vis[x][y+1]=vis[x][y]+1; if(ear[x][y+1]==INF)return vis[x][y+1]; q.push(make_pair(x,y+1));
32         }
33     }
34     return -1;
35 }
36 int main(){
37     m=read(); inc(i,0,400)inc(j,0,400)ear[i][j]=INF;
38     inc(i,1,m){
39         int x=read()+1,y=read()+1,z=read();
40         inc(i,-1,1)ear[x+i][y]=min(ear[x+i][y],z),ear[x][y+i]=min(ear[x][y+i],z);
41     }
42     printf("%d",bfs()); return 0;
43 }

20160917

时间: 2024-10-26 19:03:10

bzoj1611[Usaco2008 Feb]Meteor Shower流星雨*的相关文章

1611: [Usaco2008 Feb]Meteor Shower流星雨

1611: [Usaco2008 Feb]Meteor Shower流星雨 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 1010  Solved: 446[Submit][Status][Discuss] Description 去年偶们湖南遭受N年不遇到冰冻灾害,现在芙蓉哥哥则听说另一个骇人听闻的消息: 一场流星雨即将袭击整个霸中,由于流星体积过大,它们无法在撞击到地面前燃烧殆尽, 届时将会对它撞到的一切东西造成毁灭性的打击.很自然地,芙蓉哥哥开

【bzoj 1611】 [Usaco2008 Feb]Meteor Shower流星雨 bfs

题目:http://www.lydsy.com/JudgeOnline/problem.php?id=1611 1611: [Usaco2008 Feb]Meteor Shower流星雨 Time Limit: 5 Sec Memory Limit: 64 MB Submit: 1272 Solved: 557 [Submit][Status][Discuss] Description 去年偶们湖南遭受N年不遇到冰冻灾害,现在芙蓉哥哥则听说另一个骇人听闻的消息: 一场流星雨即将袭击整个霸中,由于

[Usaco2008 Feb]Meteor Shower流星雨[BFS]

Description 去年偶们湖南遭受N年不遇到冰冻灾害,现在芙蓉哥哥则听说另一个骇人听闻的消息: 一场流星雨即将袭击整个霸中,由于流星体积过大,它们无法在撞击到地面前燃烧殆尽, 届时将会对它撞到的一切东西造成毁灭性的打击.很自然地,芙蓉哥哥开始担心自己的 安全问题.以霸中至In型男名誉起誓,他一定要在被流星砸到前,到达一个安全的地方 (也就是说,一块不会被任何流星砸到的土地).如果将霸中放入一个直角坐标系中, 芙蓉哥哥现在的位置是原点,并且,芙蓉哥哥不能踏上一块被流星砸过的土地.根据预 报,

BZOJ 1611: [Usaco2008 Feb]Meteor Shower流星雨

题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1611 解:直接广搜... 程序: #include<iostream> #include<cstdio> #include<cstring> #include<cstdlib> #include<queue> #define maxn 210000000 using namespace std; int ans; int f[500][5

bzoj1611 / P2895 [USACO08FEB]流星雨Meteor Shower

P2895 [USACO08FEB]流星雨Meteor Shower 给每个点标记一下能够走的最迟时间,蓝后bfs处理一下 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<algorithm> 5 #include<cctype> 6 #include<queue> 7 #define re register 8 using namespac

洛谷 P2895 [USACO08FEB]流星雨Meteor Shower

P2895 [USACO08FEB]流星雨Meteor Shower 题目描述 Bessie hears that an extraordinary meteor shower is coming; reports say that these meteors will crash into earth and destroy anything they hit. Anxious for her safety, she vows to find her way to a safe locatio

POJ 3669 Meteor Shower(流星雨)

POJ 3669 Meteor Shower(流星雨) Time Limit: 1000MS    Memory Limit: 65536K Description 题目描述 Bessie hears that an extraordinary meteor shower is coming; reports say that these meteors will crash into earth and destroy anything they hit. Anxious for her sa

【流星雨Meteor Shower】

题意翻译 贝茜听说了一个骇人听闻的消息:一场流星雨即将袭击整个农场,由于流星体积过大,它们无法在撞击到地面前燃烧殆尽,届时将会对它撞到的一切东西造成毁灭性的打击.很自然地,贝茜开始担心自己的安全问题.以FJ牧场中最聪明的奶牛的名誉起誓,她一定要在被流星砸到前,到达一个安全的地方(也就是说,一块不会被任何流星砸到的土地).如果将牧场放入一个直角坐标系中,贝茜现在的位置是原点,并且,贝茜不能踏上一块被流星砸过的土地. 根据预报,一共有M颗流星(1 <= M <= 50,000)会坠落在农场上,其中

poj 3669 Meteor Shower(bfs)

Description Bessie hears that an extraordinary meteor shower is coming; reports say that these meteors will crash into earth and destroy anything they hit. Anxious for her safety, she vows to find her way to a safe location (one that is never destroy