(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 马拉松后记 斗 ...
随机推荐
- Java面试求职之==与equals()差别
Java中equals和==的差别 java中的数据类型,可分为两类: 1.基本数据类型(也称原始数据类型):byte,short,char,int,long,float,double,boo ...
- When does layoutSubviews get called?
转自:http://blog.logichigh.com/2011/03/16/when-does-layoutsubviews-get-called/ It’s important to optim ...
- Android 环境下编译FFmpeg
Android 环境下编译FFmpeg 开发环境:Ubuntu 12.04.2 LTS , android-sdk-linux, android-ndk-r8e 一 .X264 编译 1. X2 ...
- 【开源java游戏框架libgdx专题】-03-项目开发与调试
创建libgdx项目 下载项目配置工具 gdx-setup.jar 生成项目 导入Eclipse File -> Import -> Gradle -> Gradle Project ...
- 关于xml作为模板的配置服务系统开发
最近在做一个后台配置系统,其实之前也接触过,所谓的配置系统就是指,将你的网站布局抽象成一个xml模板,里面包括你自定义的节点,然后将变化的部分作为配置项,通过服务将配置选项与模板组装成一个js(这个服 ...
- 一位ACM过来人的心得
刻苦的训练我打算最后稍微提一下.主要说后者:什么是有效地训练? 我想说下我的理解. 很多ACMer入门的时候,都被告知:要多做题,做个500多道就变牛了.其实,这既不是充分条件.也不会是必要条件. 我 ...
- 获取html页面所有的img标签
#region 获取html中所有Img Regex r = new Regex(@"<img[\s\S]*?>", RegexOptions.IgnoreCase); ...
- bootstrap栅格布局
<!DOCTYPE html> <html lang="en"> <head> <!-- //简介:boststrap内置了一套响应式,移 ...
- datazen 备份还原
DataZen备份: DataZen还原 第一步:用管理员进入dos,输入 net stop datazen 第二步:切换到datazen Core Service的安装目录cd c:\Progr ...
- Excel.Application手册
----转载:http://blog.csdn.net/xxfigo/article/details/6618129 定制模块行为(1) Option Explicit '强制对模块内所有变量进行声明 ...