(2015年郑州轻工业学院ACM校赛题) B迷宫
这是个简单的广搜题,注意下一下细节都能写出来, 大多数人都少考虑了一点,就是 假如 我的起始点就有一个机关, 并且不是 1 号机关,
这样的话是无结果的。不懂的可以测试一下代码下面的数据
#include<stdio.h>
#include<iostream>
#include<stack>
#include<queue>
#include<math.h>
#include<stdlib.h>
#include<cstring>
using namespace std;
#define Max(a,b) (a>b?a:b)
#define Min(a,b) (a<b?a:b)
#define INF 0xfffffff
#define maxn 110
struct Point
{
int x, y, step;
}B[maxn];
char maps[maxn][maxn];
bool vis[maxn][maxn];
int dir[][] = { {-,-},{-,},{,-},{,},{-,},{,},{,-},{,}};
int n, m, k; bool OK(Point P,int i,int End)
{
if(P.x >= && P.x < n && P.y >= && P.y < m && maps[P.x][P.y] != '#' && maps[P.x][P.y] <= End+'' && !vis[P.x][P.y])
{
if(i < )
{
if(i == && maps[P.x+][P.y] == '#' && maps[P.x][P.y+] == '#')
return false;
if(i == && maps[P.x+][P.y] == '#' && maps[P.x][P.y-] == '#')
return false;
if(i == && maps[P.x-][P.y] == '#' && maps[P.x][P.y+] == '#')
return false;
if(i == && maps[P.x-][P.y] == '#' && maps[P.x][P.y-] == '#')
return false;
}
return true;
} return false;
} int BFS(int Star,int End)
{
Point P, Pn;
queue<Point> Q; memset(vis, false, sizeof(vis)); Q.push(B[Star]); if(B[End].x == B[].x && B[End].y == B[].y && End != )
return -; while( !Q.empty() )
{
P = Q.front();
Q.pop(); if(P.x == B[End].x && P.y == B[End].y)
return P.step; for(int i=; i<; i++)
{
Pn.x = P.x + dir[i][];
Pn.y = P.y + dir[i][];
Pn.step = P.step + ; if( OK(Pn,i, End) )
{
vis[Pn.x][Pn.y] = true;
Q.push(Pn);
}
}
}
return -;
} int main()
{
int T, i; cin >> T; while(T--)
{
cin >> n >> m >> k; for(i=; i<n; i++)
scanf("%s", maps[i]); for(i=; i<=k; i++)
{
cin >> B[i].x >> B[i].y;
B[i].x --, B[i].y --;
B[i].step = ;
maps[B[i].x][B[i].y] = i + '';
}
int ans, sum;
ans = sum = ; for(i=; i<k; i++)
{
ans = BFS(i, i+); if(ans == -)
break; sum += ans;
} if( k == i)
printf("%d\n", sum);
else
printf("-1\n");
}
return ;
} /* 3
3 3 2
...
#..
...
1 1
1 2
1 1 答案 -1
*/
(2015年郑州轻工业学院ACM校赛题) B迷宫的更多相关文章
- (2015年郑州轻工业学院ACM校赛题) E 汇编原理
此题属于比较麻烦的模拟题,比赛的时候是队友写的, 比赛结束之后自己也写了一遍,感觉对复杂模拟的掌控还是不行! 解析: 我感觉 ADD操作 和 MOV操作比较类似 所以就写在了一块,MUL操作单独写就行 ...
- (2015年郑州轻工业学院ACM校赛题)H 五子棋
我们最后选题策略失败,选到五子棋这题,没想到这题非常麻烦,最后也没做出来! 比赛结束后发了题解再做才做出来! 不得不说 这题真的很麻烦 一个需要比较细致分类讨论的题目.判定棋盘是否合法应考虑如下几种情 ...
- (2015年郑州轻工业学院ACM校赛题) C 数列
在我们做完B题之后就去看C题了, 发现很多人都已经做出来了, 并且一血还是我们学弟拿的, 感觉这题不难, 我们举了几个例子之后发现全是Alice 然后我们就决定意淫一下,试试看! 没想到就A了 - . ...
- (2015年郑州轻工业学院ACM校赛题) A 彩票
这是个简单的题目,其实就是判断是否是偶数, 对二进行特判一下就行了! 比赛时候我们还错两次................ 一看简单题就想抢一血,谁知到第一次提交CE, 再提交WA 汗........ ...
- (2015年郑州轻工业学院ACM校赛题) J 堆
判断是否是一个堆,把树构造好遍历一遍就OK了 #include<stdio.h> #include<iostream> #include<stack> #inclu ...
- (2015年郑州轻工业学院ACM校赛题)I 旋转图像
矩阵旋转,写一个转 90° 的函数就行了, 注意每次要将 长和宽的值进行交换就行了. #include<stdio.h> #include<iostream> #include ...
- (2015年郑州轻工业学院ACM校赛题) G 矩阵
看这道题的时候就感觉用一点动归思想+暴力 就能过了. #include<stdio.h> #include<iostream> #include<stack> #i ...
- 20170416郑州市轻工业学院ACM校赛
这是个星期天,但是,这种非一线城市,重点城市什么的高中,放假从来不按套路出牌,几乎可以说能给你一天是福气.当然,比县里好的多,问在县里上高中的初中同学,放假更是比我们一天里的午休+晚上吃饭时间还要少. ...
- 第八届郑州轻工业学院ACM(程序设计大赛)校内预选赛
郑州轻工业学院有一个大赛,把几个有趣的题目分享一下.下面是题目连接,喜欢了就点点... 斗破苍穹 礼上往来 统计人数 神の数 炉石传说 Mathematics and Geometry 马拉松后记 斗 ...
随机推荐
- 给想上MIT的牛学生说几句
[来信] 老师您好! 非常冒昧的来打搅您,仅仅是在学习上实在有些困惑才来向您求教一番. 我是计算机科学与技术的大一学生,我非常喜欢我自己的专业,可是学校里讲的东西太慢,太浅,所以我一般都是自学,我在自 ...
- [PWA] 12. Intro to IndexedDB
Use the library indexedDB-promised. Create a database and stroe: import idb from 'idb'; // Open(db_n ...
- python 学习笔记 copy
浅copy >>> a=[1,2,3,[4,5,6]]>>> a[1, 2, 3, [4, 5, 6]]>>> a[3].append(7)> ...
- React Native 从入门到原理
React Native 是最近非常火的一个话题,介绍如何利用 React Native 进行开发的文章和书籍多如牛毛,但面向入门水平并介绍它工作原理的文章却寥寥无几. 本文分为两个部分:上半部分用通 ...
- niop 2003 传染病控制 (哎呀我氧化钙 坑了好久的搜索题)
/* 我觉得挺对的啊 实在是考虑不到有什么情况会判不了 70分 就这样吧 - - */ #include<iostream> #include<cstdio> #include ...
- Log4net 配置注意事项
1. 首先引入Log4net程序集 2.修改webconfig配置文件 在 configuration 节点下面添加如下节点 <configSections> <section na ...
- 5事件DOM零级事件跟DOM二级事件
事件的行为传播,行为本身跟事件绑定没有关系:1.全新认识事件(某一个具体的行为)->行为本身:浏览器天生自带的一些行为操作->click,mouseover(mouseenter),mou ...
- Activity中setResult(int resultCode, Intent data)与onActivityResult(int requestCode, int resultCode, Intent data)方法的调用
关于Activity的生命周期 onCreate(Bundle savedInstanceState):可以进行一些初始化的工作在activity第一次被创建的时候调用.这里是你做所有初始化设置的地方 ...
- 【转】HttpServlet详解
[转]HttpServlet详解 Servlet的框架是由两个Java包组成:javax.servlet和javax.servlet.http. 在javax.servlet包中定义了所有的Servl ...
- redisbook笔记——redis内部数据结构
在Redis的内部,数据结构类型值由高效的数据结构和算法进行支持,并且在Redis自身的构建当中,也大量用到了这些数据结构. 这一部分将对Redis内存所使用的数据结构和算法进行介绍. 动态字符串 S ...