ECNUOJ 2150 完美的拯救
完美的拯救
Time Limit:1000MS Memory Limit:65536KB
Total Submit:147 Accepted:50
Description
一只可怜的蚂蚁被万恶的魔术师困在了一个魔方上, 蚁后决定委派你去拯救这只可怜的蚂蚁, 你被空投在魔方上的某个位置,你需要在最短的时间内找到那只蚂蚁, 之后使用逃离卷轴返回蚁巢,你只能在格子线上行走,并且知道被困蚂蚁的位置,你需要出色的计算来完成这项艰巨的任务.
假设魔方是3x3x3个正方体小块组成,如下图所示
每面皆有4x4个格子道路可以行走.偶尔有些岔路点上有魔术师的魔兵把守,你不可以经过该岔路.现在以某个顶点为坐标原点建立空间坐标系,各个顶点坐标如上图所示. eg. 你被空投至(1,0,1),你要去(3,1,2), 并且(2,1,3)和(3,1,1)不可经过: 那么你可选择如下的四步路线:
(1,0,1) -> (1,0,2) -> (2,0,2) -> (3,0,2) -> (3,1,2),(也有别的选择)
Input
第一行有一个正整数N(1<=N<=500),表示测试数据的组数。
对于每组测试数据:
第一行有7个整数: D, x1 y1 z1 x2 y2 z2,分别是魔方的大小,你的当前坐标以及蚂蚁的坐标(也为出口坐标);(两点均在魔方表面上).
第二行有1个整数t,表示不可经过的岔路个数.接下来t行,每行有一个坐标,是不可经过的岔路的坐标.
( 3 <= D <= 10, 0<=t<=10)
Output
对于每组测试数据输出一个数,即最小步数,若不可到达则输出-1
Sample Input
2
3 1 0 1 3 1 2
2
2 1 3
3 1 1
4 0 1 1 1 4 1
0
Sample Output
4
4
Hint:
因为魔方是实体的,所以你只能在魔方的表面上行走.
Source
解题:无聊宽搜。。
#include <bits/stdc++.h>
using namespace std;
struct Point {
int x,y,z;
int step;
} start,des;
int n;
bool vis[][][];
const int dir[][] = {
,-,,
,,,
-,,,
,,,
,,-,
,,
};
queue<Point>q;
bool check(const Point &t) {
if(t.x < || t.x > n || t.y < || t.y > n || t.z < || t.z > n) return false;
if(t.x > && t.x < n && t.z > && t.z < n && t.y > && t.y < n) return false;
if(vis[t.x][t.y][t.z]) return false;
vis[t.x][t.y][t.z] = true;
return true;
}
int bfs() {
while(!q.empty()) q.pop();
start.step = ;
q.push(start);
Point np;
vis[start.x][start.y][start.z] = true;
while(!q.empty()) {
Point now = q.front();
q.pop();
if(now.x == des.x && now.y == des.y && now.z == des.z)
return now.step;
for(int i = ; i < ; ++i) {
np.x = now.x + dir[i][];
np.y = now.y + dir[i][];
np.z = now.z + dir[i][];
np.step = now.step + ;
if(check(np)) q.push(np);
}
}
return -;
}
int main() {
int kase,m,x,y,z;
scanf("%d",&kase);
while(kase--) {
scanf("%d%d%d%d",&n,&start.x,&start.y,&start.z);
scanf("%d%d%d",&des.x,&des.y,&des.z);
memset(vis,false,sizeof vis);
scanf("%d",&m);
while(m--) {
scanf("%d%d%d",&x,&y,&z);
vis[x][y][z] = true;
}
printf("%d\n",bfs());
}
return ;
}
ECNUOJ 2150 完美的拯救的更多相关文章
- 联想《拯救者》U盘UEFI启动装win7[完美激活](4)
引用这篇文章 http://www.nwmie.com.cn/jiaocheng/1394.html 我们常常不想把自己的电脑从GUID分区方式改到MBR,但是这样装完win7无法激活,embarra ...
- p2p-如何拯救k8s镜像分发的阿喀琉斯之踵?
K8s的出现为PaaS行业的发展打了一针兴奋剂,Docker+k8s的技术路线已经成为了容器云的主流.尤其针对大流量,大弹性的应用场景来说,k8s将其从繁杂的运维.部署工作中彻底拯救出来.然而事情往往 ...
- p2p-如何拯救k8s镜像分发的阿喀琉斯之踵
K8s的出现为PaaS行业的发展打了一针兴奋剂,Docker+k8s的技术路线已经成为了容器云的主流.尤其针对大流量,大弹性的应用场景来说,k8s将其从繁杂的运维.部署工作中彻底拯救出来.然而事情往往 ...
- 拯救诺基亚X6
现象:充电不稳,冲不进去电,后来直接黑屏了. 维修方式:更换手机尾插.或者更换整个尾插小板. 手机主板应该没有问题,这是本人某友的手机,据了解磕碰进水等问题.先前先后因为此问题找手机店,维修过两次,费 ...
- NOI2.5 4980:拯救行动
描述 公主被恶人抓走,被关押在牢房的某个地方.牢房用N*M (N, M <= 200)的矩阵来表示.矩阵中的每项可以代表道路(@).墙壁(#).和守卫(x). 英勇的骑士(r)决定孤身一人去拯 ...
- “500 oops socket” Debian 9 running via Linux Deploy上成功部署vsftpd的解决方案(201901原创)【成功完美简单极致】
"500 oops socket" Debian 9 running via Linux Deploy上成功部署vsftpd的解决方案(201901原创)[成功完美简单极致] #自 ...
- 敏捷史话(六):也许这个人能拯救你的代码 —— Robert C. Martin
Robert C. Martin( 罗伯特·C·马丁),作为世界级软件开发大师.设计模式和敏捷开发先驱.C++ Report杂志前主编,也是敏捷联盟(Agile Alliance)的第一任主席,我们尊 ...
- 代码的坏味道(22)——不完美的库类(Incomplete Library Class)
坏味道--不完美的库类(Incomplete Library Class) 特征 当一个类库已经不能满足实际需要时,你就不得不改变这个库(如果这个库是只读的,那就没辙了). 问题原因 许多编程技术都建 ...
- Visual Studio Code,完美的编辑器
今日凌晨,微软的文本(代码)编辑器 Visual Studio Code(简称 VS Code),发布了首个正式版,距离首个 beta 版上线时间刚好一年. 在十多年的编程经历中,我使用过非常多的的代 ...
随机推荐
- 【参考】Linux下的Memcache安装
服务器端主要是安装memcache服务器端.下载:http://www.danga.com/memcached/dist/memcached-1.2.2.tar.gz另外,Memcache用到了lib ...
- 解决maven 无法下载java-memcached的依赖问题
1.进入https://github.com/gwhalin/Memcached-Java-Client/downloads 下载java-memcached的jar包. 2.使用cmd进入maven ...
- ActiveMQ学习笔记(11)----ActiveMQ的动态网络连接
1. 多播协议multicast ActiveMQ使用Multicast协议将一个Service和其他的Broker是我Service里连接起来.IP Multicast是一个被用于网络中传输数据到其 ...
- c++类模板初探
#include <iostream> #include <string> using namespace std; // 你提交的代码将嵌入到这里 ; template &l ...
- 结构化数据、半结构化数据、非结构化数据——Hadoop处理非结构化数据
刚开始接触Hadoop ,指南中说Hadoop处理非结构化数据,学习数据库的时候,老师总提结构化数据,就是一张二维表,那非结构化数据是什么呢?难道是文本那样的文件?经过上网搜索,感觉这个帖子不错 网址 ...
- ArrayList的使用方法
1.什么是ArrayList ArrayList就是传说中的动态数组,用MSDN中的说法,就是Array的复杂版本,它提供了如下一些好处: 动态的增加和减少元素 实现了ICollection和I ...
- React diff机制(介绍虚拟DOM的机制)
https://segmentfault.com/a/1190000004003055
- POJ-3159 Candies 最短路应用(差分约束)
题目链接:https://cn.vjudge.net/problem/POJ-3159 题意 给出一组不等式 求第一个变量和最后一个变量可能的最大差值 数据保证有解 思路 一个不等式a-b<=c ...
- jQuery第三课 点击按钮 弹出层div效果
jQuery 事件方法 事件方法会触发匹配元素的事件,或将函数绑定到所有匹配元素的某个事件. 触发实例: $("button#demo").click() 上面的例子将触发 id= ...
- 红黑树(RBTREE)之上-------构造红黑树
该怎么说呢,现在写代码的速度还是很快的,很高兴,o(^▽^)o. 光棍节到了,早上没忍住,手贱了一般,看到*D的优惠,买了个机械键盘,晚上就到了,敲着还是很舒服的,和老婆炫耀了一把哈哈. 光棍节再去* ...