BZOJ 3406 乳草的入侵

BFS。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
#define maxn 150
using namespace std;
queue <int> q;
int n,m,mx,my,map[maxn][maxn];
int dx[]={0,-1,-1,-1,0,1,1,1,0},dy[]={0,-1,0,1,1,1,0,-1,-1};
char s[maxn];
bool judge(int x,int y)
{
    if ((x>=1) && (x<=n) && (y>=1) && (y<=m))
        return true;
    return false;
}
int bfs()
{
    int mmx=0;
    q.push(mx);q.push(my);q.push(0);map[mx][my]=1;
    while (!q.empty())
    {
        int hx,hy,step;
        hx=q.front();q.pop();hy=q.front();q.pop();step=q.front();q.pop();
        for (int i=1;i<=8;i++)
        {
            int nowx=hx+dx[i],nowy=hy+dy[i];
            if ((judge(nowx,nowy)) && (!map[nowx][nowy]))
            {
                map[nowx][nowy]=1;
                mmx=max(mmx,step+1);
                q.push(nowx);q.push(nowy);q.push(step+1);
            }
        }
    }
    return mmx;
}
int main()
{
    scanf("%d%d%d%d",&m,&n,&mx,&my);
    swap(mx,my);mx=n-mx+1;
    for (int i=1;i<=n;i++)
    {
        scanf("%s",s);
        for (int j=0;j<m;j++)
            if (s[j]==‘*‘) map[i][j+1]=1;
    }
    printf("%d\n",bfs());
    return 0;
}
时间: 2024-10-12 02:05:49

BZOJ 3406 乳草的入侵的相关文章

TYVJ 1030 乳草的入侵(BFS)

背景 Background USACO OCT09 6TH 描述 Description Farmer John一直努力让他的草地充满鲜美多汁的而又健康的牧草.可惜天不从人愿,他在植物大战人类中败下阵来.邪恶的乳草已经在他的农场的西北部份佔领了一片立足之地.草地像往常一样,被分割成一个高度為Y(1 <= y <= 100), 宽度為X(1 <= x <= 100)的直角网格.(1,1)是左下角的格(也就是说坐标排布跟一般的X,Y坐标相同).乳草一开始佔领了格(Mx,My).每个星期

Tyvj 1030 乳草的入侵

以一个简单的BFS对基础搜索做一个收尾好了. 给一个草,然后以这棵草为九宫格的中心,每周向周围八个方向扩散,问多少个星期能把这个农场占满. 遍历整个map,最后一个出队列的对应的星期数就是所求. 1 //#define LOCAL 2 #include <iostream> 3 #include <cstdio> 4 #include <cstring> 5 #include <queue> 6 using namespace std; 7 8 struct

乳草的入侵//BFS

P1030 乳草的入侵 时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 USACO OCT09 6TH 描述 Farmer John一直努力让他的草地充满鲜美多汁的而又健康的牧草.可惜天不从人愿,他在植物大战人类中败下阵来.邪恶的乳草已经在他的农场的西北部份佔领了一片立足之地. 草地像往常一样,被分割成一个高度為Y(1 <= y <= 100), 宽度為X(1 <= x <= 100)的直角网格.(1,1)是左下角的格(也就是说坐标排布跟一

TYVJ P1030 乳草的入侵 Label:靠输入方式坑人的水,跳马问题

背景 USACO OCT09 6TH 描述 Farmer John一直努力让他的草地充满鲜美多汁的而又健康的牧草.可惜天不从人愿,他在植物大战人类中败下阵来.邪恶的乳草已经在他的农场的西北部份佔领了一片立足之地. 草地像往常一样,被分割成一个高度為Y(1 <= y <= 100), 宽度為X(1 <= x <= 100)的直角网格.(1,1)是左下角的格(也就是说坐标排布跟一般的X,Y坐标相同).乳草一开始佔领了格(Mx,My).每个星期,乳草传播到已被乳草佔领的格子四面八方的每一

搜索算法阶段性总结

BFS与DFS的讨论:BFS:这是一种基于队列这种数据结构的搜索方式,它的特点是由每一个状态可以扩展出许多状态,然后再以此扩展,直到找到目标状态或者队列中头尾指针相遇,即队列中所有状态都已处理完毕. DFS:基于递归的搜索方式,它的特点是由一个状态拓展一个状态,然后不停拓展,直到找到目标或者无法继续拓展结束一个状态的递归. 优缺点:BFS:对于解决最短或最少问题特别有效,而且寻找深度小,但缺点是内存耗费量大(需要开大量的数组单元用来存储状态). DFS:对于解决遍历和求所有问题有效,对于问题搜索

广度优先搜索基础

一.广搜的特性(队列状态之特性) 当使用BFS遍历一张无权图,每次从队列中取出队首进行一系列扩展,将扩展成功结点放入队尾中: 这样的操作会使得整队列满足"两段性",即对于这张搜索树中队列只会保留两层的结点: 证明: 第p层结点扩展时只会扩展第p+1层结点,不会越级扩展p+k层结点(p >= 1&&k >= 2): 初始的时候队列中只有一层的结点(或者起始点): 一+二推得:该队列只保留了不超过两层的结点: 由于是"两段性",而从起始点到达

中英目录所有2719品种

中英目录 A B C D E F G H I J K L M N O P Q RS T U V W X Y Z 中英目录所有2719品种 阿比西尼亚牛筋果  Abyssinia Harrisonia 阿尔法GPC  Alpha GPC α-酮戊二酸  Alpha-Ketoglutarate α- 亚麻酸  Alpha -Linolenic Acid 阿尔泰银莲花  Creeping Chinese Windflower 阿富汗糖芥  Afghan Erysimum 阿拉伯茶  Arabian T

BZOJ 1742 Usaco2005 nov Grazing on the Run 边跑边吃草 动态规划

题目大意:给定一个数轴,初始在位置p,有n坨草(n≤3000),约瑟芬需要吃掉所有的草,定义一坨草的腐败值为吃掉的时间,求最小腐败值之和 容易证明任何时刻约瑟芬吃掉的草都是一个区间.(废话,难道还能路过草不吃?) 因此令fi,j,k表示已经吃掉了以i开头的j坨草,当前在左端点/右端点的最小腐败值之和(包括被吃掉的和未被吃掉的,当然被吃掉的腐败值就不会再涨了) DP方程自己YY吧 注意内存 #include <cstdio> #include <cstring> #include &

BZOJ 1742: [Usaco2005 nov]Grazing on the Run 边跑边吃草( dp )

dp... -------------------------------------------------------------- #include<cstdio> #include<cstring> #include<algorithm> #include<iostream> #define rep( i , n ) for( int i = 0 ; i < n ; ++i ) #define clr( x , c ) memset( x ,