正题


题目大意

一个n∗mn*mn∗m的雪地,有两种动物RRR和FFF会在雪地上留下RRR和FFF的脚印(只可以走到相邻格子,从(1,1)(1,1)(1,1)进入(n,m)(n,m)(n,m)出来,且会覆盖掉原先的脚印)。

求至少有多少只动物经过


解题思路

首先我们知道(1,1)(1,1)(1,1)所在的联通块必定是最后一只经过的动物,因为至少所以我们优先选择整个联通块作为最后一只动物。

然后由这个联通块开始向外扩展另一种脚印的联通块,之后不停扩展直到扩完为止。


codecodecode

#pragma GCC optimize(2)
%:pragma GCC optimize(3)
%:pragma GCC optimize("Ofast")
%:pragma GCC optimize("inline")
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
#include<queue>
using namespace std;
const int N=4001;
const int dx[4]={1,-1,0,0},dy[4]={0,0,1,-1};
int n,m,ans,v[N][N];
int qx[N*N],qy[N*N],l=1,r;
char c[N][N],z;
queue<int> shix,shiy;
inline long long read()
{char c;int f=0,d=1;while(c=getchar(),!isdigit(c)) if(c=='-') d=-1;f=(f<<3)+(f<<1)+c-48;while(c=getchar(),isdigit(c)) f=(f<<3)+(f<<1)+c-48;return d*f;
}
void bfs(int x,int y,char pos)
{shix.push(x);shiy.push(y);while(!shix.empty()){x=shix.front();y=shiy.front();shix.pop();shiy.pop();for(int k=0;k<4;k++){int zx=x+dx[k],zy=y+dy[k];if(zx<1||zy<1||zx>n||zy>m)continue;if(v[zx][zy]||c[zx][zy]!=pos)continue;v[zx][zy]=1;shix.push(zx);shiy.push(zy);qx[++r]=zx;qy[r]=zy;}}
}
int main()
{freopen("data.txt","r",stdin);n=read();m=read();for(int i=1;i<=n;i++)gets(c[i]+1);v[1][1]=qx[++r]=qy[r]=1;bfs(1,1,c[1][1]);z=c[1][1];while(l<=r){ans++;int R=r;if(z=='F') z='R';else z='F';for(int i=l;i<=R;i++)bfs(qx[i],qy[i],z);l=R+1;}cout<<ans;
}

jzoj3319-[BOI2013]雪地踪迹【bfs】相关推荐

  1. 【JZOJ3319】【LOJ2686】雪地踪迹【BFS】

    题目大意: 题目链接:https://loj.ac/problem/2686 在一片长方形的草地上,有2种动物--兔子和狐狸活动.兔子走过草地会留下R,狐狸走过草地会留下 F.每只动物从左上角进入草地 ...

  2. 欢乐纪中某A组赛【2019.7.8】

    前言 你以为我是jzojjzojjzoj,其实我是GMojGMojGMoj哒 成绩 JJJ表示初中,HHH表示高中后面加的是几年级 上至222分XJQXJQXJQ,下至200ZZY200ZZY200Z ...

  3. 【2019暑假集训】07.08比赛总结

    又双㕛叕自闭了... 比赛思路 一上来看到T1感觉是什么奇奇怪怪的数论题目,又看了看T2发现是一道水题,再看看T3感觉可以搞一搞DP. T1思考了一会儿只会一个NM的DP(暴力),转战T2,不久就把T ...

  4. HDU-1459.非常可乐(BFS )

    这道题TLE了很多次,原来一直以为将数字化为最简可以让运算更快,但是去了简化之后才发现,真正耗时的就是化简....还和队友学到了用状态少直接数组模拟刚就能过... 本题大意:给出可乐的体积v1,给出两 ...

  5. HDU1548:A strange lift(Dijkstra或BFS)

    题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=1548 题意:电梯每层有一个数,例如第n层有个数k, 那么这一层只能上k层或下k层,但是不能低于一层或高 ...

  6. HDU 1429 胜利大逃亡(续) (BFS+位压缩)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1429 胜利大逃亡(续) Time Limit: 4000/2000 MS (Java/Others)  ...

  7. usaco Overfencing 穿越栅栏(BFS)

    Overfencing 穿越栅栏 农夫 John 在外面的田野上搭建了一个巨大的用栅栏围成的迷宫.幸运的是,他在迷宫的边界上留出 了两段栅栏作为迷宫的出口.更幸运的是,他所建造的迷宫是一个" ...

  8. 数据结构--搜索BFS

    文章目录 广度优先搜索 典型例题 广度优先搜索 广度优先搜索类似于树的层次遍历过程.它需要借助一个队列来实现.如图2-1-1所示,要想遍历从v0到v6的每一个顶点,我们可以设v0为第一层,v1.v2. ...

  9. 2017icpc沈阳 G Infinite Fraction Path BFS+剪枝

    题意:给一个长度为n的字符串数组,你可以选定起点跳n次,从i点只能跳到(i*i+1)%n的位置,最后求一个最大字典序. 思路:要求最大的,即每一步都是最大,所以将最大的数都入队进行bfs跳下一步. 剪 ...

最新文章

  1. c语言表示哥德巴赫猜想,用C语言来验证哥德巴赫猜想(定义的是int型)
  2. 041_Unicode对照表七
  3. TAJ齐发力 互联网巨头抢滩“区块链+票据”市场
  4. CozyRSS开发记录3-标题栏再加强
  5. SAP物料管理自动记帐详解
  6. [html] DOM节点的根节点是不是body?
  7. Centos下载地址
  8. 轮询、长轮询与Web Socket的前端实现
  9. 联邦知识蒸馏概述与思考(续)
  10. RHEL5实现YUM本地源的配置
  11. 32怎么将mcu内的代码擦除_凭借这款MCU产品,瑞萨电子竟然超越了ARM?
  12. python网络编程(进程与多线程)
  13. js逆向案例-过加速乐
  14. 玩qq游戏提示计算机内存不足,我有时玩QQ游戏就出现虚拟内存不足.要怎么 – 手机爱问...
  15. 查看详细Windows VISTA 或Windows 7激活状态
  16. 【转载】《周一清晨的领导课》读书笔记!!!
  17. c语言博物馆文物管理系统,博物馆文物智能管理系统.docx
  18. java groovy集成_java与Groovy的整合
  19. 定义python函数时如果函数中没有return语句_定义Python函数时,如果函数中没有return语句,则默认返回空值None。...
  20. C++ 中的指针参数传递和引⽤参数传递

热门文章

  1. 用python写简单爬虫,用Python写简单的爬虫
  2. java之static关键词的作用
  3. mysql快照过久_Oracle 快照(snapshot) 管理
  4. php网页连mysql_php - 如何在单个网页上连接多个MySQL数据库?
  5. spring boot jar包_「Spring Boot 新特性」 jar 大小自动瘦身
  6. python中x_python中round(x,[n])的使用
  7. [Redis6]配置文件详解
  8. [蓝桥杯2017初赛]纸牌三角形-枚举permutation+数论
  9. Minimal Square CodeForces - 1360A(简单思维和图形判断)
  10. rjdbc读取mysql_R通过RJDBC连接外部数据库 (转)