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][500];
bool vis[500][500];
int h[5]={0,-1,1,0,0},l[5]={0,0,0,-1,1};
struct ding{
  int x,y,t;
};
queue<ding>q;
bool check(int x,int y)
{
  if ((x<0)||(y<0)) return false;
  return true;
}
int main()
{
  int m;scanf("%d",&m);
  for (int i=0;i<=400;i++)
   for (int j=0;j<=400;j++)
   f[i][j]=maxn;
  int x1,y1,t1;
  for (int i=1;i<=m;i++)
  {
    scanf("%d%d%d",&x1,&y1,&t1);
    for (int j=0;j<=4;j++)
    if (check(x1+h[j],y1+l[j])) f[x1+h[j]][y1+l[j]]=min(f[x1+h[j]][y1+l[j]],t1);
  }
  q.push((ding){0,0,0});
  vis[0][0]=true;
  while (!q.empty())
  {
      ding now=q.front();
      q.pop();
      if (f[now.x][now.y]==maxn)
    {
      printf("%d\n",now.t);
      return 0;
    }
    for (int i=1;i<=4;i++)
     if (check(now.x+h[i],now.y+l[i]))
      if (f[now.x+h[i]][now.y+l[i]]>now.t+1)
       if (!vis[now.x+h[i]][now.y+l[i]])
       {
            vis[now.x+h[i]][now.y+l[i]]=true;
         q.push((ding){now.x+h[i],now.y+l[i],now.t+1});
       }
  }
  printf("-1\n");
  return 0;
}
时间: 2024-11-03 22:18:02

BZOJ 1611: [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年不遇到冰冻灾害,现在芙蓉哥哥则听说另一个骇人听闻的消息: 一场流星雨即将袭击整个霸中,由于

bzoj1611[Usaco2008 Feb]Meteor Shower流星雨*

bzoj1611[Usaco2008 Feb]Meteor Shower流星雨 题意: 给个网格,有m个流星,每个流星在ti时刻打在(xi,yi)的格子上,并把该格子和相邻的格子打烂.有个人从(0,0)出发,问最短逃离时间(格子被打烂之后就不能走). 题解: bfs一发,如果某格子被打烂的时间小于到达时间则不能到达,最后如果到达打烂时间为正无穷的格子即为成功逃出.注意网格的边界应该大于流星的边界,因为如果逃到那些地方也算安全地带. 代码: 1 #include <cstdio> 2 #incl

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

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

BZOJ 1592: [Usaco2008 Feb]Making the Grade 路面修整( dp )

最优的做法最后路面的高度一定是原来某一路面的高度. dp(x, t) = min{ dp(x - 1, k) } + | H[x] - h(t) | ( 1 <= k <= t ) 表示前 i 个路面单调不递减, 第 x 个路面修整为原来的第 t 高的高度. 时间复杂度O( n³ ). 令g(x, t) = min{ dp(x, k) } (1 <= k <= t), 则转移O(1), g() 只需在dp过程中O(1)递推即可, 总时间复杂度为O( n² ) 然后单调不递增也跑一遍

bzoj 1593: [Usaco2008 Feb]Hotel 旅馆

1593: [Usaco2008 Feb]Hotel 旅馆 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 800  Solved: 441[Submit][Status][Discuss] Description 奶牛们最近的旅游计划,是到苏必利尔湖畔,享受那里的湖光山色,以及明媚的阳光.作为整个旅游的策划者和负责人,贝茜选择在湖边的一家著名的旅馆住宿.这个巨大的旅馆一共有N (1 <= N <= 50,000)间客房,它们在同一层楼中顺次一字排

BZOJ 1609: [Usaco2008 Feb]Eating Together麻烦的聚餐( LIS )

求LIS , 然后用 n 减去即为answer ---------------------------------------------------------------------------- #include<cstdio> #include<cstring> #include<algorithm> #include<iostream> #define rep( i , n ) for( int i = 0 ;  i < n ; ++i )

BZOJ 1609: [Usaco2008 Feb]Eating Together

题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1609 解:题目很明显,我们只要找到最长不下降子序列,然后总长度减去它的长度就可以了,用o(nlogn)的方法. 但是,用O(9n)的动归,显然更优(吧...) 我学习了一下他人的动归. 用f[i][j](1<=i<=n;j=1,2,3)来表示序列前i个的时候,我们当前用j 这个数字结尾最多需要改几个.当然我们还要枚举上一段的位置,具体我程序里写吧. #include<iostre

BZOJ 1592: [Usaco2008 Feb]Making the Grade 路面修整

Description FJ打算好好修一下农场中某条凹凸不平的土路.按奶牛们的要求,修好后的路面高度应当单调上升或单调下降,也就是说,高度上升与高度下降的路段不能同时出现在修好的路中. 整条路被分成了N段,N个整数A_1, ... , A_N (1 <= N <= 2,000)依次描述了每一段路的高度(0 <= A_i <= 1,000,000,000).FJ希望找到一个恰好含N个元素的不上升或不下降序列B_1, ... , B_N,作为修过的路中每个路段的高度.由于将每一段路垫高