-
B - Three States
- CodeForces - 590C
- 题意:给出一个图,有三类区域1,2,3,#是墙不能走,’.‘是可以修路的,问如何修一条路能够是三块联通
- 思路:bfs预处理出,三类区域到达图上个点需要修路的数量,队列堆优化修路数量少的优先级高。
- 然后枚举一下他们三个的交点在哪使得修路最短。
-
#include<bits/stdc++.h> using namespace std; #define ll long long #define inf 0x3f3f3f3f #define maxn 1050 int n,m,c[5],d[5]; char mmp[maxn][maxn]; bool vis[maxn][maxn]; int dis[5][maxn][maxn]; int to[5][2]= {{0,1},{0,-1},{1,0},{-1,0}}; struct node { int x,y,step; bool operator<(const node &b)const { return step>b.step; } } top,temp; bool judge(int x,int y) { if(x<0||y<0||x>=n||y>=m||vis[x][y]||mmp[x][y]=='#')return false; return true; } void bfs(int ord,int x,int y) { memset(vis,0,sizeof(vis)); priority_queue<node>q; q.push(node{x,y,0}); vis[x][y]=1; while(!q.empty()) { top=q.top(); q.pop(); dis[ord][top.x][top.y]=top.step; for(int i=0; i<4; i++) { temp=top; temp.x+=to[i][0]; temp.y+=to[i][1]; if(judge(temp.x,temp.y)) { vis[temp.x][temp.y]=1; if(mmp[temp.x][temp.y]=='.') temp.step++; q.push(temp); } } } return ; } ll mi(ll a,ll b) { if(a<b)return a; else return b; } int main() { ll ans=inf,te; memset(dis,inf,sizeof(dis)); scanf("%d%d",&n,&m); for(int i=0; i<n; i++) { cin>>mmp[i]; for(int j=0; j<m; j++) { if(mmp[i][j]=='1') c[1]=i,d[1]=j; else if(mmp[i][j]=='2') c[2]=i,d[2]=j; else if(mmp[i][j]=='3') c[3]=i,d[3]=j; } } for(int i=1; i<=3; i++) bfs(i,c[i],d[i]); for(int i=0; i<n; i++) for(int j=0; j<m; j++) { if(mmp[i][j]=='#')continue; if(dis[1][i][j]==inf||dis[2][i][j]==inf||dis[3][i][j]==inf)continue; te=dis[1][i][j]+dis[2][i][j]+dis[3][i][j]; if(mmp[i][j]=='.') ans=mi(ans,te-2); else ans=mi(ans,te); } if(ans>=inf)printf("-1\n"); else printf("%lld\n",ans); return 0; }
相关推荐
使用广播星历进行 GPS 卫星位置的计算
目录1.计算卫星运动的平均角速度 n2.计算观测瞬间卫星的近地点角3.计算偏近点角4.计算真近点角 f5.计算升交角距 6.计算摄动改正项7.进行摄动改正 8.计算卫星在轨道面坐标系中的位置9.计算观测瞬间升交点的经度 L10.计算卫星在瞬时地球坐标系中的位置11.计算卫星在协议地球坐标系中的位置使用广播星历进行GPS卫星位置的计算的详细步骤如下:关于在广播星历中各参数的分布情况可以参考下图:首先根据广播星历中给出的参数 计算参考时刻(TOE) 的平均角速度 式中,GM为万有引力常数 G 与地球总质量
Codeforces 590C Three States(bfs)
题目链接:Codeforces 590C Three States解题思路处理出每个’.’的位置和石像的距离,取最小值即可,但是这样能处理石像相邻的情况,因为相邻的石像移动是不需要代价的。所以还要考虑这类情况。代码#include <cstdio> #include <cstring> #include <queue> #include <vector> #include <algorithm>us
Zemax物理光学实战:3分钟搞定高斯光束传播模拟(附菲涅尔局部分析技巧)
本文详细介绍了在Zemax中进行高斯光束传播模拟与菲涅尔局部分析的实战技巧。通过3分钟快速设置指南和参数解析,帮助光学工程师准确模拟激光光束特性,避免常见误区。特别分享了菲涅尔局部分析的关键技巧和传播参数优化策略,提升光学系统设计的精度与效率。
codeforces 591 E. Three States(bfs+思维)
题目链接:http://codeforces.com/contest/591/problem/E 题意:有3个数字表示3个城市,每种城市都是相互连通的,然后不同种的城市不一定联通,'.'表示可以建设道路‘#’表示 不能,问最短建设多少道路能够让3种城市都联通起来 题解:直接bfs一遍所有类型的城市,bfs的同时更新第i类城市到(x,y)点的最短距离,更新第i类城市到第j类城市...
Multisim新手必看:从零搭建数字时钟仿真电路(附完整原理图)
本文详细介绍了如何使用Multisim从零开始搭建数字时钟仿真电路,涵盖晶振电路设计、计数电路实现、校时功能配置等关键步骤。通过完整的原理图和实用技巧,帮助新手快速掌握Multisim仿真设计,实现精准的数字时钟功能。
速腾16线激光雷达(RS-16)在ubuntu18.04系统下跑SC-A-LOAM算法
说明: 简要记录一下速腾16线激光雷达即RS-16在ubuntu18.04系统下跑SC-A-LOAM算法的过程,因为SC-A-LOAM算法源码不支持RS雷达的数据,大致思想就是先将rs雷达发布的激光数据转换为velodyne类型的数据,考虑到接下来还要基于RS-16实时运行SC-A-LOAM算法,这里提前将RS_SDK驱动安装好。 1 搭建SC-A-LOAM算法运行环境 首先需要在电脑上搭建SC-A-LOAM算法的运行环境,见文章《ubuntu18.04搭建SC-A-LOAM环境并运行》 本文所使用的系统架
Codeforces 1749E 最短路,01bfs
最短路
AVL-Excite新手必看:5步搞定发动机阀系系统建模(附B站视频教程)
本文为AVL-Excite新手提供发动机阀系系统建模的5步详细指南,涵盖软件环境搭建、基本结构建立、关键参数设置、仿真分析及常见问题排查。通过清晰的步骤说明和实用技巧,帮助工程师快速掌握建模方法,并附有精选B站视频教程链接,便于实践学习。
Codeforces 591E Three States【优先队列Bfs+思维】
E. Three States time limit per test 5 seconds memory limit per test 512 megabytes input standard input output standard output The famous global economic crisis is approa
161、车载环视系统的ISP多路同步架构——海思Hi3516DV300的4路鱼眼校正与拼接的帧同步误差控制
文章摘要: 针对海思Hi3516DV300车载环视系统四路鱼眼摄像头拼接画面动态撕裂问题,分析发现根本原因为帧同步误差(部分通道帧起始时间差1.2ms)。关键解决措施包括:1)通过VI通道主从同步模式(MASTER/SLAVE)结合软件补偿控制帧延迟;2)优化VPSS通道帧率锁定与丢帧策略确保拼接时序一致;3)严格校准鱼眼校正LUT参数与产线标定数据匹配;4)建议采用硬件同步信号(如sensor的FSIN引脚)降低软件同步压力。调试阶段需通过示波器直接测量sensor VSYNC信号,量产时需注意动态切换分
14、脑肿瘤复发预测与转移瘤跟踪的自动化方法
本文介绍两种脑肿瘤相关自动化方法:一种用于预测胶质瘤切除术后的肿瘤复发位置,结合图像配准、静态模型和动态模拟模型,利用患者的DTI数据进行预测;另一种用于在纵向扫描中跟踪转移性脑肿瘤,通过联合求解配准参数估计和图像变化标记问题,提高肿瘤跟踪的准确性和效率。文章同时分析了两种方法的优势与挑战,并提出了未来研究方向,旨在为脑肿瘤的诊断和治疗提供更可靠的工具。
Codeforces round 591E Three States (思维优化BFS)
The famous global economic crisis is approaching rapidly, so the states of Berman, Berance and Bertaly formed an alliance and allowed the residents of all member states to freely pass through the terr...
用 SAP HANA SDA 访问 PostgreSQL:从可行性到落地实践的完整指引
摘要:SAP HANA可通过SDA/SDI技术访问PostgreSQL数据库,支持数据虚拟化和实时复制。主要实现路径包括:1)使用Camel JDBC适配器创建虚拟表进行联邦查询;2)利用PostgreSQL Log Reader适配器实现变更数据捕获(CDC)。实施时需配置Data Provisioning Agent,注意权限和网络要求。官方文档指出,通过SDI+DP Agent的方式比直接SDA连接更稳定可靠。虚拟化查询时,HANA会自动将SQL下推到PostgreSQL执行,优化性能。
CodeForces 590C Three States BFS
Three Statesy 题解: 以3个大陆为起点,都dfs一遍,求出该大陆到其他点的最小距离是多少, 然后枚举每个点作为3个大陆的路径交点。 代码: #include<bits/stdc++.h> using namespace std; #define Fopen freopen("_in.txt","r",stdin); freopen("_out.txt"...
汉书HE8,好用的汇编代码编写工具
汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大
锂电池充电器电路设计 里面有电路
锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。
01BFS:Three States
遇到道路,权值为1,遇到国家,权值为0
jre9下载 jdk9
(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】
Codeforces ~ 1063B ~ Labyrinth (0-1 BFS)
题意 给你一个N*M的图,起点为(r,c),只能往左走X步,往右走Y步,上下无限制。问可以有多少个点可以到达? 思路 第一次听说01BFS。当时写的时候直接BFS,结果PP了,感觉貌似有问题,但是没管,果然就FST了。。。 01BFS其实就是把队列开成双端队列,每次花费为1走到的点还是放在后面,花费为0走到的点放在队首。每次取队首元素进行更新。 #include <...
大中型超市收银系统(可直接运行)
光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开
Codeforces ~ 590C ~ Three States (0-1 BFS)
题意 有三个王国要修路使得他们连通起来,'.'表示可以修路的地方,'#'表示不能修路的地方,数字表示该地点是属于哪个国家的路,求使得三个王国连通起来的最小值。 思路 求得每个国家到每个地方的最小花费,然后枚举三个国家都连接某个点,求一个最小花费。 对于‘.’的位置要 -2,因为这个点只需要被修一次而不是三次,还有就是三个0x3f3f3f3f加起来回超int。 #include...
Codeforces 346D Robot Control(01BFS)
题意 有一个 \(N\) 个点, \(M\) 条边的有向图, 初始有一个机器人在 \(1\) 号点. 每个时刻, 这个机器人会随机选择一条从该点出发地边并通过.当机器人到达点 \(N\) 时, 它就会自动关闭. 然而这个机器人如果在某个时刻到达自己曾经到过的点的话, 它就会爆炸. 因此, 你决定对机器人实施一些命令, 让它在某些时候按照规定的边走, 而非随机选择. 问对机器人最少使用多少条命令可以...
codeforces 1063B. Labyrinth 【01bfs】
题目大意:在一个地图上,有些点不能走,有些点可以走,向左走向右走会有花费,向上和向下没有,现在给定起点,和向左走、向右走的最多步数,问能够走到的点有多少个 题目分析:这个题如果直接bfs 去搜的话,没有办法很好的更新到达某个点最少需要多少个向左走,所以我们用bfs跑一个最短路,dist[i][j] 表示达到 (i,j)这个点最少需要向左走的步数,那么向右走的步数就为 j-c0+dist[i][j]...
Codeforces 1340 C (01BFS)
Codeforces 1340 C (01BFS) 题意:你要从0走到n,红绿灯交替,绿灯可以随便走,红灯
【01BFS+思维】Codeforces Round #516 D. Labyrinth
【01BFS+思维】Codeforces Round #516 D. Labyrinth 题意: 给出一个迷宫,限定能往左走和往右走的次数分为为l,r,上下走不限,迷宫中能走的范围最大时多少格子? 思路: 采用双端队列,BFS的时候优先上下走放在双端队列首部,左右走放在队列尾部,这样可以保证走的方法最优。 #include<bits/stdc++.h> using namespace ...
codeforces #516 div1B Labyrinth(01bfs)
题意 给出n∗m,1≤n≤2000n*m,1\leq n \leq 2000n∗m,1≤n≤2000的矩阵,矩阵中包含’.‘和’*'两种符号,·可走,※不可走,给出起始点(x,y)( x,y )(x,y),问从起始点向外走,有多少格子会被走到,*不考虑。但有个约束,最多向左走L步,最多向右走R步。上和下没有约束。 题解 设从(x,y)(x,y)(x,y)走到(x0,y0)(x_0,y_0)(x0...
C. Three States
题目描述:C. Three States time limit per test5 seconds memory limit per test512 megabytes inputstandard input outputstandard output The famous global economic crisis is approaching rapidly, so the stat
01 bfs 学习
01 bfs简介 bfsbfsbfs 可以 O(V+E)O(V+E)O(V+E) 求解边权全为 111 的图上最短路。 而当边权只有 000 或 111 时,使用其它最短路算法是有些浪费的,此时可以使用 bfsbfsbfs 的变种:01bfs01 bfs01bfs 来快速求解,复杂度仍为 O(V+E)O(V+E)O(V+E). 01bfs01bfs01bfs 维护一个双端队列,当边权为 000 时,使用 push_frontpush\_frontpush_front,当边权为 111 时,使用 push_
Codeforces Round #327 (Div. 1) C. Three States
C. Three States time limit per test 5 seconds memory limit per test 512 megabytes input standard input output standard output The famous global economic crisis is approa
Codeforces 910A BFS
题意:给定一个n长度的01字符串,下标为1到n。每次前进的跳跃步数不能超过d,假定当前位置为x,当且仅当x+i位置为1,i问从起点1到终点n最少步数是多少。分析:属于很简单的搜索题,我用的是BFS,因为DFS超时了,想不到更好的剪枝...代码如下:#include #include #include using namespace std; const int INF = 10000000
5567



被折叠的 条评论
为什么被折叠?



