UVAlive-2554 Snakes & Ladders---BFS状态的存储
题目链接:
https://vjudge.net/problem/UVALive-2554
题目大意:
题目的大概意思是又N*N的棋盘,编号从1 到 N*N 棋盘中分布着蛇和梯子玩家在位置1处,
然后掷骰子,如果点数在梯子尾则顺着梯子到达梯子头,若掷到蛇头,则滑到蛇尾
问最快到达终点所需掷的次数...
思路:
BFS跑一遍,但是这里的BFS存储的是每一步能到达的所有得状态,而且没有必要把每一步变成的状态存储下来,根据上一步就可以直接推下一步。比如下图,红色表示蛇,绿色表示梯子,下面列出了每一步能够到达的范围
第0步的时候

第1步的时候

第2步的时候

第3步的时候

所以可以用数组模拟每一步
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<queue>
#include<stack>
#include<map>
#include<set>
#include<sstream>
#include<functional>
using namespace std;
typedef long long ll;
const int maxn = + ;
const int INF = 1e9 + ;
int T, n, m, cases;
map<int, int>Map;//蛇和梯子的起点和终点
set<int>s;
int game[maxn];//保存游戏的每一步的状态
int cnt[maxn];//中间变量
int main()
{
cin >> T;
int m1, m2, x, y;
while(T--)
{
scanf("%d%d%d", &n, &m1, &m2);
Map.clear();
s.clear();
while(m1--)
{
cin >> x >> y;
Map[x] = y;
s.insert(x);
}
while(m2--)
{
cin >> x >> y;
Map[x] = y;
s.insert(x);
}
memset(game, ,sizeof(game));
memset(cnt, , sizeof(cnt));
game[] = ;
int ans = ;//记录步数
while(game[n * n] == )
{
memcpy(cnt, game, sizeof(game));
memset(game, , sizeof(game));
for(int i = ; i < n * n; i++)
{
if(!cnt[i])continue;//为0表示此处没有到达
for(int k = ; k <= ; k++)//枚举骰子的点数
{
if(k + i > n * n)break;//已经出界
if(s.count(k + i))//如果此处是梯子或者蛇
{
game[Map[k + i]] = ;
}
else game[k + i] = ;
}
}
ans++;
}
cout<<ans<<endl;
}
return ;
}
但是WA,而且这个链接根本没有人过了,强烈怀疑测试数据出错,百度了其他人的程序,都是大同小异。
UVAlive-2554 Snakes & Ladders---BFS状态的存储的更多相关文章
- hdoj 5094 Maze 【BFS + 状态压缩】 【好多坑】
Maze Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 100000/100000 K (Java/Others) Total Sub ...
- ACM/ICPC 之 BFS+状态压缩(POJ1324(ZOJ1361))
求一条蛇到(1,1)的最短路长,题目不简单,状态较多,需要考虑状态压缩,ZOJ的数据似乎比POj弱一些 POJ1324(ZOJ1361)-Holedox Moving 题意:一条已知初始状态的蛇,求其 ...
- HDU1429+bfs+状态压缩
bfs+状态压缩思路:用2进制表示每个钥匙是否已经被找到.. /* bfs+状态压缩 思路:用2进制表示每个钥匙是否已经被找到. */ #include<algorithm> #inclu ...
- BFS+状态压缩 hdu-1885-Key Task
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1885 题目意思: 给一个矩阵,给一个起点多个终点,有些点有墙不能通过,有些点的位置有门,需要拿到相应 ...
- poj 1753 Flip Game(bfs状态压缩 或 dfs枚举)
Description Flip game squares. One side of each piece is white and the other one is black and each p ...
- BFS+状态压缩 HDU1429
胜利大逃亡(续) Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total S ...
- HDU 3247 Resource Archiver (AC自己主动机 + BFS + 状态压缩DP)
题目链接:Resource Archiver 解析:n个正常的串.m个病毒串,问包括全部正常串(可重叠)且不包括不论什么病毒串的字符串的最小长度为多少. AC自己主动机 + bfs + 状态压缩DP ...
- Azure Terraform(四)状态文件存储
一,引言 我们都知道在执行部署计划之后,当前目录中就产生了名叫 "" 的 Terraform 的状态文件,该文件中记录了已部署资源的状态.默认情况下,在执行部署计划后,Terraf ...
- UVALive 2520 Holedox Moving(BFS+状态压缩)
这个题目在比赛的时候我们是没有做出来的,但是听到他们说进制哈希的时候,感觉真的是挺高端的,于是赛后开始补题,本着我的习惯在看题解之前自己再试着写一遍,我当时存储状态的方法是string + map,我 ...
随机推荐
- Redis数据过期策略
1.Redis中key的的过期时间 通过EXPIRE key seconds命令来设置数据的过期时间.返回1表明设置成功,返回0表明key不存在或者不能成功设置过期时间.在key上设置了过期时间后ke ...
- 使用domain模块捕获异步回调中的异常
和其他服务器端语言相比,貌似node.js 对于异常捕捉确实非常困难. 首先你会想到try/catch ,但是在使用过程中我们会发现并没有真正将错误控制在try/catch 语句中. 为什么? 答案是 ...
- flex布局简析
最近开始对flex布局进行一个重新的认识. 首先. flex布局适用于所有元素 但是注意一点的就是,一旦父级元素设定flex布局的时候,子元素的传统布局属性, float,clear,vertical ...
- Java ORM Hibernate 入门笔记
一.下载 官网地址:http://hibernate.org/ Hibernate下有ORM(关系型数据库).OGM(NoSQL数据库).Search(对象全文检索).Validator的工具. OR ...
- 【django之stark组件】
一.需求 仿照django的admin,开发自己的stark组件.实现类似数据库客户端的功能,对数据进行增删改查. 二.实现 1.在settings配置中分别注册这三个app # Applicatio ...
- centos安装包选择--liveCD、liveDVD、bin-DVD、netinstall和minimal
在Centos官方选择下载centos的时候有好几个文件可供下载,包括liveCD.liveDVD和bin-DVD等等.这些文件都有什么区别,我们应该选择哪个文件下载呢? liveDVD版本:它就是一 ...
- CSS3 box-shadow 属性
定义和用法box-shadow 属性向框添加一个或多个阴影. 默认值: none继承性: no版本: CSS3JavaScript 语法: object.style.boxShadow="1 ...
- NVisionXRFBXConverter(Beta版)实践课程
一.前言 NVisionXR引擎使用的模型格式为.mesh(具体请看NVisionXR引擎基本介绍:http://www.arvrschool.com/read-7381 ),为了能够将常见的格式转换 ...
- beta冲刺总结
前言: 经过一周的努力,对alpha版本进行不断的更新,得到了beta版本. 主要成员介绍: 成员 性格 优点 缺点 主要工作 黄紫仪 努力奋斗型 努力奋斗,爱学习 爱吐槽 功能点修改和部分界面修改, ...
- networkx 学习
import networkx as nx import pylab import numpy as np #自定义网络 row=np.array([,,,,,,]) col=np.array([,, ...