状压+BFS

通过观察数据范围可知,我们应该状压钥匙种类,直接BFS即可

注意,一个点处可能不知有一把钥匙

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstdlib>
#include <queue>
using namespace std;
bool f[14][14][1200];
int n,m,p,k,s,key[15][15],block1[15][15],block2[15][15],dx[4]={-1,0,0,1},dy[4]={0,-1,1,0};
struct pa{
int x,y,key,tim;
};
queue<pa> q;
int main(){
cin>>n>>m>>p;
cin>>k;
for(int i=1;i<=k;i++){
int a1,a2,b1,b2,g;
cin>>a1>>b1>>a2>>b2>>g;
if(!g) g=50;
if(a1==a2) block1[a1][min(b1,b2)]=g;
else block2[min(a1,a2)][b1]=g;
}
cin>>s;
for(int i=1;i<=s;i++){
int a,b,ty;
cin>>a>>b>>ty;
key[a][b]=key[a][b]|(1<<(ty-1));
}
/* for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
printf("%d ",block2[i][j]);
}
printf("\n");
}*/
pa a;
a.x=1;a.y=1;a.key=key[1][1];a.tim=0;
q.push(a);f[1][1][a.key]=1;
while(!q.empty()){
pa u=q.front();q.pop();
//printf("%d %d %d u\n",u.x,u.y,u.key);
for(int i=0;i<4;i++){
int x=u.x+dx[i],y=u.y+dy[i];
if(x>0&&x<=n&&y>0&&y<=m){
if(((i==1)||(i==2))&&block1[min(x,u.x)][min(y,u.y)]){
if(block1[min(x,u.x)][min(y,u.y)]==50) continue;
if(!((u.key>>(block1[min(x,u.x)][min(y,u.y)]-1))&1)) continue;
}
if(((i==0)||(i==3))&&block2[min(x,u.x)][min(y,u.y)]){
if(block2[min(x,u.x)][min(y,u.y)]==50) continue;
if(!((u.key>>(block2[min(x,u.x)][min(y,u.y)]-1))&1)) continue;
}
pa v;
v.x=x;v.y=y;v.key=u.key|key[x][y];v.tim=u.tim+1;
if(!f[x][y][v.key]) q.push(v),f[x][y][v.key]=1;
if(x==n&&y==m){
printf("%d\n",v.tim);
return 0;
}
}
}
}
printf("-1\n");
return 0;
}

洛谷 [P4011] 孤岛营救问题的更多相关文章

  1. 洛谷 P4011 孤岛营救问题【最短路+分层图】

    题外话:昨夜脑子昏沉,今早一调试就过了...错误有:我忘记还有墙直接穿墙过...memset初始化INF用错了数...然后手残敲错一个状态一直过不了样例...要是这状态去比赛我简直完了......or ...

  2. 洛谷P4011 孤岛营救问题(状压+BFS)

    传送门 和网络流有半毛钱关系么…… 可以发现$n,m,p$都特别小,那么考虑状压,每一个状态表示位置以及钥匙的拥有情况,然后每次因为只能走一步,所以可以用bfs求出最优解 然后是某大佬说的注意点:每个 ...

  3. 洛谷 P4011 孤岛营救问题【bfs】

    注意: 一个点可能有多把钥匙,所以把每个点有钥匙的情况状压一下 两个点之间有障碍的情况只给出了单向,存的时候记得存一下反向 b[i][j]表示当前点拥有钥匙的状态,g[x1][y1][x2][y2]表 ...

  4. Luogu P4011 孤岛营救问题(状态压缩+最短路)

    P4011 孤岛营救问题 题意 题目描述 \(1944\)年,特种兵麦克接到国防部的命令,要求立即赶赴太平洋上的一个孤岛,营救被敌军俘虏的大兵瑞恩.瑞恩被关押在一个迷宫里,迷宫地形复杂,但幸好麦克得到 ...

  5. 洛谷P4011 【网络流24题】 孤岛营救问题 (BFS+状压)

    一道妙题啊......(不知道为什么这道题的标签是网络流,不需要用网络流啊) 如果没有门和钥匙,连边(边权为1)求最短路就行了. 但是有这两个因素的限制,我们采用分层建图的思想,一共2p层,每层对应持 ...

  6. P4011 孤岛营救问题

    \(\color{#0066ff}{题目描述}\) 1944 年,特种兵麦克接到国防部的命令,要求立即赶赴太平洋上的一个孤岛,营救被敌军俘虏的大兵瑞恩.瑞恩被关押在一个迷宫里,迷宫地形复杂,但幸好麦克 ...

  7. Luogu P4011 孤岛营救问题

    题目链接 \(Click\) \(Here\) 注意坑点:一个地方可以有多把钥匙. 被卡了一会,调出来发现忘了取出来实际的数字,直接把二进制位或上去了\(TwT\),其他的就是套路的分层图最短路.不算 ...

  8. 「LOJ#6121」「网络流 24 题」孤岛营救问题(BFS

    题目描述 1944 年,特种兵麦克接到国防部的命令,要求立即赶赴太平洋上的一个孤岛,营救被敌军俘虏的大兵瑞恩.瑞恩被关押在一个迷宫里,迷宫地形复杂,但幸好麦克得到了迷宫的地形图.迷宫的外形是一个长方形 ...

  9. 洛谷 P1396 营救

    题目链接 https://www.luogu.org/problemnew/show/P1396 题目描述 “咚咚咚……”“查水表!”原来是查水表来了,现在哪里找这么热心上门的查表员啊!小明感动的热泪 ...

随机推荐

  1. 访问 Tomcat支配项目去除项目名和端口号通过IP地址(或域名)访问

    Tomcat去除项目名称和端口号 1. 去除端口号 将端口设为80: <Connector port="80" protocol="HTTP/1.1" c ...

  2. UEP-保存

    uep的保存操作分为ajaxgrid和ajaxform两种方式 1.ajaxgrid public void storeInfoSave(){ try { //两个dataWrap 一个dataWra ...

  3. Spring MVC 学习总结(一)——MVC概要与环境配置 转载自【张果】博客

    Spring MVC 学习总结(一)--MVC概要与环境配置   目录 一.MVC概要 二.Spring MVC介绍 三.第一个Spring MVC 项目:Hello World 3.1.通过Mave ...

  4. debian 9 双显卡安装NVIDIA显卡驱动

    最近用debian,给debian装n卡驱动折腾了好几天了,主要还是网络不好,官方wiki的方法下载经常卡死..摸索了几天感觉已经摸到了头绪,决定写下来供大家参考参考 先提供单显卡NVIDIA驱动的安 ...

  5. destoon框架二次开发【整理】

    =========================================================== destoon使用中的一些心得   ====================== ...

  6. Weblogic新建域,Weblogic新建部署环境,Weblogic重新构建域

    Weblogic新建域,Weblogic新建部署环境,Weblogic重新构建域 ======================== 蕃薯耀 2018年1月29日 http://www.cnblogs. ...

  7. socket编程--相关函数--sendto();read();

    {1} 头文件:#include <sys/types.h>   #include <sys/socket.h>定义函数:int sendto(int s, const voi ...

  8. 20170505 PHP实践中知识点

    1.json_encode 不转义 2.empty() 与 isset() 区别 在使用 php 编写页面程序时,我经常使用变量处理函数判断 php 页面尾部参数的某个变量值是否为空,开始的时候我习惯 ...

  9. wamp版本升级小问题记录

    在升级wamp版本时遇到的一些小问题,特此记录 在安装完成之后,修改了Apache根目录,可以正常访问.但是发现 httpd-vhosts.conf追加配置的无法访问,逐步检查,有以下问题 1.Inc ...

  10. oracle 配置 自启动 和 关闭

    今天在看oracle自启动脚本,突然有点时间,总结一下!!! 第一次写博客,大家随便看看就好,有错误麻烦提醒下,不喜欢别喷,主要是锻炼自己,形成写博客的好习惯. 刚毕业,现在还没转正,在干运维和自学d ...