暂存的题解

news/2024/11/6 19:09:22/文章来源:https://www.cnblogs.com/sadlin/p/18530729

P4011 孤岛营救问题

感觉其实我能想出来,但是对难题产生了恐惧,直接看题解了,确实简单,很抱歉浪费了一道题。

数据范围很小,搜索 bfs,钥匙直接状态压缩,找到答案立即返回,否则就无解。

我们要彻底的分析问题,为什么我想不到,以后我要怎么总结,首先看到题之后要先看数据范围,看到数据范围非常小就考虑搜索,其次我们看到我们需要钥匙所有我们状态肯定也要储存钥匙,但钥匙都储存空间有点大就考虑状态压缩,直接 dfs 就可以。

其实还可以有钥匙的建分层图跑最短路,但是就这样吧。

注:状压开大数组啊,为什么我没开大,唐。

#include <bits/stdc++.h>
#define int long long
#define ls p<<1
#define rs p<<1|1 
#define re register 
const int N=5e5+10;
using namespace std;int n,m,p;int k;int mp[15][15][15][15];
vector<int> mpkey[20][20];struct ss{int x,y,a,sum;
}; queue<ss> q;int xa[5]={0,0,1,-1};
int ya[5]={1,-1,0,0};int vis[15][15][1<<15];int solve(){q.push({1,1,0,0});while(!q.empty()){ss fir=q.front();q.pop();int x=fir.x,y=fir.y,z=fir.a,sum=fir.sum;if(x==n&&y==m){return sum;}for(int i=0;i<mpkey[x][y].size();i++){int jk=mpkey[x][y][i];z|=(1<<(jk-1));}	vis[x][y][z]=1;for(int i=0;i<4;i++){int xx=x+xa[i];int yy=y+ya[i];if(!(xx>=1&&xx<=n&&yy>=1&&yy<=m)||vis[xx][yy][z]==1){continue;}if(mp[x][y][xx][yy]==-1){continue;}if(mp[x][y][xx][yy]!=0){if(((z>>(mp[x][y][xx][yy]-1))&1)!=1){continue;}	}q.push({xx,yy,z,sum+1});}}return 0;
} signed main(){ios::sync_with_stdio(false);cin.tie(nullptr); memset(vis,0,sizeof 0);cin>>n>>m>>p;cin>>k;for(int i=1;i<=k;i++){int x,y,xx,yy,op;cin>>x>>y>>xx>>yy>>op;if(op==0){op=-1;}mp[x][y][xx][yy]=op;mp[xx][yy][x][y]=op; }cin>>k;for(int i=1;i<=k;i++){int x,y,op;cin>>x>>y>>op;mpkey[x][y].push_back(op);}int ans=solve();if(ans!=0){cout<<ans;}else{cout<<-1;}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/827801.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

图的基本操作

目录1.图2.图的结构体定义3.图的初始化4.添加顶点、删除顶点4.1添加顶点4.2删除顶点5.添加边、删除边5.1添加边5.2删除边6.打印图7.main函数 在生命旅途中,我们就像是一个个节点,被无数看不见的边相连。每一次的相识与相离,都在这张巨大的网络图中留下独特的印记。 1.图 图(…

正态分布

正态分布 1 标准正态分布 1.1概率密度函数 \[f(x) = \frac{1}{\sqrt{2\pi}}e^{-\frac{x^2}{2}} \]1.2 累计分布函数 \[F(x) = \frac{1}{\sqrt{2\pi}} \int_{-\infty}^{x}e^{-\frac{t^2}{2}}dt \] 2 (一般)正态分布 2.1 概率密度函数 \[f(x) = \frac{1}{\sqrt{2\pi\sigma…

Pycharm中使用AI辅助Coding工具Aws Toolkit

一、安装插件 二、重启完了以后点击左下角的aws 三、点developer tools,双击codewhisperer中的start,点击connect 四、点击sign out,open and copy code五、跳转到网页浏览器中打开登录界面,我们在图中所示的 code 一栏中粘贴上验证码,点击"next"按钮六、没有账…

【日志分析平台】Logstash:IT-ELK日志分析平台

以下文章来源于唯云轩 ,作者唯云轩 上篇介绍了ELK日志分析平台-Elasticsearch集群的搭建,本篇章为大家介绍Logstash的安装 服务器规划及Elasticsearch集群搭建参考上一篇:IT-ELK日志分析平台-Elasticsearch集群 Logstash安装步骤如下官网下载安装包下载地址: (https://www.e…

Next 设置字体文件cdn 或者本地

@font-face {font-family: font-ali-bold;src: url(https://cdnurl/Alibaba-PuHuiTi-Bold.woff2) format(woff2);font-weight: normal;font-style: normal; }tailwind 设置 fontFamily 直接使用变量, 直接在className上写 font-ali 即可应用该字体 本地:// const aliF…

WPF的入门学习

环境的搭配 我们通过VS的官网来安装的VS2022,安装上C#的功能,这样就完成了环境的搭配 第一个wpf工程 打开vs2022,点击如图的创建新的工程。点选WPF的项目配置一个新的项目这样就完成了项目的创建项目结构 介绍一下大概的项目结构在APP.XAml文件中,设置我们的窗体入口界面的…

【安全架构】权限控制模型

原创 大袤宏图不同的权限模型提供了灵活的访问控制策略,本文绘制了不同模型的ER图,探讨这些模型的原理及适用场景。 一、访问控制列表模型 访问控制列表模型(Access Control List, ACL) 基于资源的访问控制列表,每个资源都有一个列表记录哪些用户可以对其进行哪些操作,适用…

不用代码,2小时搞定自己的网站

之前有许多人咨询过怎么建个官网,有没有 便宜,省事,且数据由自己掌控的方式。 毕竟一个企业在初期,如果不是IT行业,不一定有程序员,但是数据由自己掌握,未来发展壮大了,人员角色被齐了,就可以在原来的基础上做更好的发展了。 最近我也把玩了一个自助建站的产品,快速试…

PentesterTools:简单的SQLMap图形化辅助工具

原创 XiaoTouMingyo Hack分享吧免责声明 该公众号分享的安全工具和项目均来源于网络,仅供安全研究与学习之用,如用于其他用途,由使用者承担全部法律及连带责任,与工具作者和本公众号无关。工具介绍 SQLmap辅助工具是一款图形用户界面(GUI)工具,旨在简化和增强SQLmap的使…

【Xshell】高级用法: “隧道转发”

原创 大龙山悟道 IT运维不跑路xshell隧道转发类型 类型一:本地拨出 Local(Outgoing)作用:将本地计算机指定的某个端口连接到远程服务器的一个指定端口上。 应用场景:当从本地机器安全地访问位于远程服务器上的服务(如数据库、web服务等)时使用。 工作原理:通过SSH连接,用…

【安全运维】检测即代码(DAC) 详细步骤

原创 Zafkie1 SecLink安全空间引言 DAC(Detection As Code),检测即代码是一种战略方法,可将安全检测机制无缝集成到软件开发生命周期中。通过将安全控制视为代码,组织可以在整个SIEM运维过程中自动部署、配置和维护安全措施。 或许很多人听说过DAC的概念,但是并没有一步步地…

有道领世视频课程下载工具,如何在电脑端下载有道领世视频课程到本地?

一. 安装有道领世课程下载器 1.获取学无止下载器 https://www.xuewuzhi.cn/ydshengxue_downloader 2.下载安装后,然后点击桌面快捷方式运行即可。 注意:杀毒软件可能会阻止外部exe文件运行,并将其当做成病毒,直接添加信任即可,本软件绝对没有木马病毒。 二. 使用说明 1.学…