https://www.luogu.org/problemnew/show/P1519

题解:二进制状态压缩+BFS

注意:洛谷上数据以‘\r\n’结尾,并非‘\n’

/*
*@Author:   STZG
*@Language: C++
*/
#include <bits/stdc++.h>
#include<iostream>
#include<algorithm>
#include<cstdlib>
#include<cstring>
#include<cstdio>
#include<string>
#include<vector>
#include<bitset>
#include<queue>
#include<deque>
#include<stack>
#include<cmath>
#include<list>
#include<map>
#include<set>
//#define DEBUG
#define RI register int
#define endl "\n"
using namespace std;
typedef long long ll;
//typedef __int128 lll;
const int N=200+10;
const int M=100000+10;
const int MOD=1e9+7;
const double PI = acos(-1.0);
const double EXP = 1E-8;
const int INF = 0x3f3f3f3f;
int t,n,m,k,p,l,r,u,v;
int ans,cnt,flag,temp,sum;
int a[N][N];
int vis[N][N];
char str[N][N]={' '};
int dir[4][2]={-1,0,0,1,1,0,0,-1};
struct node{int x,y,w;node(){};node(int i,int j,int v):x(i),y(j),w(v){}
}s,tmp,f;
int main()
{
#ifdef DEBUGfreopen("input.in", "r", stdin);//freopen("output.out", "w", stdout);
#endif//ios::sync_with_stdio(false);//cin.tie(0);//cout.tie(0);//scanf("%d",&t);//while(t--){scanf("%d%d",&m,&n);getchar();getchar();for(int i=1;i<=2*n+1;i++)cin.getline(str[i]+1,1000);queue<node>q;for(int i=2;i<=2*n+1;i+=2){for(int j=2;j<=2*m+1;j+=2){int x=i/2;int y=j/2;for(int k=0;k<4;k++){if(str[i+dir[k][0]][j+dir[k][1]]!=(k%2?'|':'-')){a[x][y]+=(1<<k);}}if(str[i][1]!='|'&&!vis[x][1]){vis[x][1]=1;q.push({x,1,1});}if(str[i][2*m+1]!='|'&&!vis[x][m]){vis[x][m]=1;q.push({x,m,1});}if(str[1][j]!='-'&&!vis[1][y]){vis[1][y]=1;q.push({1,y,1});}if(str[2*n+1][j]!='-'&&!vis[n][y]){vis[n][y]=1;q.push({n,y,1});}}}ans=1;while(!q.empty()){f=q.front();q.pop();//cout<<f.x<<" "<<f.y<<" "<<f.w<<endl;for(int i=0;i<4;i++){if(a[f.x][f.y]&(1<<i)){tmp.x=f.x+dir[i][0];tmp.y=f.y+dir[i][1];tmp.w=f.w+1;if(1<=tmp.x&&tmp.x<=n&&1<=tmp.y&&tmp.y<=m&&!vis[tmp.x][tmp.y]){vis[tmp.x][tmp.y]=tmp.w;ans=max(ans,tmp.w);q.push(tmp);}}}}cout<<ans<<endl;//}#ifdef DEBUGprintf("Time cost : %lf s\n",(double)clock()/CLOCKS_PER_SEC);
#endif//cout << "Hello world!" << endl;return 0;
}

穿越栅栏 Overfencing相关推荐

  1. luogu P1519 穿越栅栏 Overfencing

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

  2. usaco Overfencing 穿越栅栏(BFS)

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

  3. USACO2.4のP1519-穿越栅栏(Overfencing)【bfs】

    正题 题目大意 一个迷宫,有许多出口,求一个点到最近的出口最远. 解题思路 直接bfs暴力搜索,然后保存上次的答案 code // luogu-judger-enable-o2 #include< ...

  4. 洛谷P2181答案C语言,洛谷P2181 对角线(组合数)

    题目描述 对于一个N个定点的凸多边形,他的任何三条对角线都不会交于一点.请求楚图形中对角线交点的个数. 例如,6边形: 输入输出格式 输入格式: 第一行一个n,代表边数. 输出格式: 第一行输出交点数 ...

  5. 【读书】马克·李维《自由的孩子》摘录

    没有任何的牢笼可禁锢我的思想,所有的情愫都可以穿越栅栏飞向远方. --马克·李维 <自由的孩子> 这是马克·李维的<自由的孩子>中让我感触最深的话,这场青春的挽歌,关乎友情.关 ...

  6. 《the cave》攻略及感悟

    <the cave>这款游戏是一个智力解谜游戏,寒假太无聊,又不想刷题,于是把这个游戏给通关了,哈哈. 我玩的是汉化版的,里面的英语基本上不到1/3吧,贴个链接吧:<the cave ...

  7. 【续集】宫锁心玉第2部【一】『再度穿越』(欢迎转载分享)

    传说在历史上有一种颠倒空间的现象九星连珠,人们称这种现象叫做穿越.然而在2011年,历史上出现了反穿越第一人--爱新觉罗•胤禩.当他穿越到这个世界后,他找到了他最重要的人--洛晴川. 晴川:你--是怎 ...

  8. SW练习_栅栏2_unionfind_凸包

    连接重新挂载的部分可以优化 package com.company.real; import java.io.BufferedReader; import java.io.FileInputStrea ...

  9. 五台山穿越,连穿五台未果

    7月5日五台山穿越 计划安排   本次登大五台共有4人参加,大白鲨.苗苗.快乐天涯和公牛.其中快乐天涯和公牛是第一次登五台,所以根据队员体力情况分成了 两个队:我独自走4个台:另外三人走北台和中台.但 ...

最新文章

  1. ECCV 2020 | 对损失信息进行建模,实现信号处理高保真还原
  2. Netty实战六之ChannelHandler和ChannelPipeline
  3. MIMIC 以太坊医疗项目开发(2) 前端H5介绍
  4. 数值计算与优化(共轭梯度法和QR)
  5. web元件库、axure元件库、通用元件库、常用web组件、常用表单、框架、数据表单、导航栏、边框、图标、列表、日期时间选择器、评分组件、穿梭框、输入框、步骤条、图表组件、数据可视化、后台模板、时间轴
  6. C语言随机读写数据文件(一)
  7. js中的同步与异步的理解
  8. springboot @Configuration配置类里面使用@Value获取不到.yml配置文件属性的值
  9. 侧信道实验实验三 S盒CPA侧信道攻击
  10. 软件工程基础篇(五):结构化程序分析SA+结构化程序设计SP+详细设计
  11. 利用极小极大搜索和alpha-beta剪枝算法预测五子棋对弈落子
  12. 27岁,大专学历,女程序员内心的感受和行业焦虑
  13. 【微信小程序】微信小程序项目+仿哔哩哔哩b站
  14. InputStream与DataInputStream的区别
  15. c android显示gif动画,MFC显示GIF动画图片
  16. 便签提醒事项怎么设置闹钟
  17. python 条件语句判断连续三个数,Python_3_流程控制语句:条件判断语句(if语句),循环语句,嵌套...
  18. HarmonyOS开发01:单击事件
  19. 锐捷交换机做流量镜像(多对多)及跨设备传输
  20. 怎么将flv转换成mp4?

热门文章

  1. php数组的值传递给另一个数组,如何把一个固定数组的值传递给另外一个数组
  2. mysql实现日志系统_基于Hadoop/CloudBase/MySQL的日志分析系统的设计与实现
  3. vs代码补全的快捷键_一款Python编程的自动补全插件神器——kite
  4. android动态添加xml布局,android – 如何动态添加视图已经在xml布局中声明的RelativeLayout?...
  5. oracle 查询每组条数,Oracle SQL查询:根据时间检索每组的最新值
  6. 深度学习和目标检测系列教程 13-300:YOLO 物体检测算法
  7. 寻找百度翻译参数,实现百度翻译
  8. 为了OFFER,花了几个小时,刷下Leetcode链表算法题
  9. 八十三、Eureka实现相互注册
  10. 五、Requests库详细的用法