B - Three States CodeForces - 590C -0-1 BFS

CodeForces - 364E(二维分治) 给出一个n*m的矩形,问有多少个子矩阵包含1的个数为k 参考博客 好难的一题分治。。基本分治思路是不断切割中线,一刀水平,一刀垂直的切 每次切割完后枚举割线两边的矩形包含的1的个数,例如如下这幅图,是按水平中线分割完的,然后先枚举矩形的左右边界Y1,Y2,接着再枚举矩形的上下边界,按这样分治可以保证每次数的矩形都会穿过切割的中线,可以保证矩形不数重,不数漏 博客里的人每次分治后矩形... 阅读详情
  •  
  • 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;
    }
    
  •  
  •  
  •  
银河麒麟V10ServerSP3中安装Nacos2.4.x详细教程 阅读详情

相关推荐

使用广播星历进行 GPS 卫星位置的计算

目录1.计算卫星运动的平均角速度 n2.计算观测瞬间卫星的近地点角3.计算偏近点角4.计算真近点角 f5.计算升交角距 6.计算摄动改正项7.进行摄动改正 8.计算卫星在轨道面坐标系中的位置9.计算观测瞬间升交点的经度 L10.计算卫星在瞬时地球坐标系中的位置11.计算卫星在协议地球坐标系中的位置使用广播星历进行GPS卫星位置的计算的详细步骤如下:关于在广播星历中各参数的分布情况可以参考下图:首先根据广播星历中给出的参数 计算参考时刻(TOE) 的平均角速度 式中,GM为万有引力常数 G 与地球总质量

qq_43381998的博客 5567

Codeforces 590C Three States(bfs)

题目链接:Codeforces 590C Three States解题思路处理出每个’.’的位置和石像的距离,取最小值即可,但是这样能处理石像相邻的情况,因为相邻的石像移动是不需要代价的。所以还要考虑这类情况。代码#include <cstdio> #include <cstring> #include <queue> #include <vector> #include <algorithm>us

不慌不忙、不急不躁 1217

Zemax物理光学实战:3分钟搞定高斯光束传播模拟(附菲涅尔局部分析技巧)

本文详细介绍了在Zemax中进行高斯光束传播模拟与菲涅尔局部分析的实战技巧。通过3分钟快速设置指南和参数解析,帮助光学工程师准确模拟激光光束特性,避免常见误区。特别分享了菲涅尔局部分析的关键技巧和传播参数优化策略,提升光学系统设计的精度与效率。

lambda的博客 804

codeforces 591 E. Three States(bfs+思维)

题目链接:http://codeforces.com/contest/591/problem/E 题意:有3个数字表示3个城市,每种城市都是相互连通的,然后不同种的城市不一定联通,'.'表示可以建设道路‘#’表示 不能,问最短建设多少道路能够让3种城市都联通起来 题解:直接bfs一遍所有类型的城市,bfs的同时更新第i类城市到(x,y)点的最短距离,更新第i类城市到第j类城市...

awow80285的博客 455

Multisim新手必看:从零搭建数字时钟仿真电路(附完整原理图)

本文详细介绍了如何使用Multisim从零开始搭建数字时钟仿真电路,涵盖晶振电路设计、计数电路实现、校时功能配置等关键步骤。通过完整的原理图和实用技巧,帮助新手快速掌握Multisim仿真设计,实现精准的数字时钟功能。

ios99的博客 328

速腾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环境并运行》 本文所使用的系统架

超爱吃小蛋糕的66的博客 2373

Codeforces 1749E 最短路,01bfs

最短路

stdforces的博客 395

AVL-Excite新手必看:5步搞定发动机阀系系统建模(附B站视频教程)

本文为AVL-Excite新手提供发动机阀系系统建模的5步详细指南,涵盖软件环境搭建、基本结构建立、关键参数设置、仿真分析及常见问题排查。通过清晰的步骤说明和实用技巧,帮助工程师快速掌握建模方法,并附有精选B站视频教程链接,便于实践学习。

weixin_29305313的博客 505

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

mengxiang000000 465

161、车载环视系统的ISP多路同步架构——海思Hi3516DV300的4路鱼眼校正与拼接的帧同步误差控制

文章摘要: 针对海思Hi3516DV300车载环视系统四路鱼眼摄像头拼接画面动态撕裂问题,分析发现根本原因为帧同步误差(部分通道帧起始时间差1.2ms)。关键解决措施包括:1)通过VI通道主从同步模式(MASTER/SLAVE)结合软件补偿控制帧延迟;2)优化VPSS通道帧率锁定与丢帧策略确保拼接时序一致;3)严格校准鱼眼校正LUT参数与产线标定数据匹配;4)建议采用硬件同步信号(如sensor的FSIN引脚)降低软件同步压力。调试阶段需通过示波器直接测量sensor VSYNC信号,量产时需注意动态切换分

zzfmlxs的博客 136

14、脑肿瘤复发预测与转移瘤跟踪的自动化方法

本文介绍两种脑肿瘤相关自动化方法:一种用于预测胶质瘤切除术后的肿瘤复发位置,结合图像配准、静态模型和动态模拟模型,利用患者的DTI数据进行预测;另一种用于在纵向扫描中跟踪转移性脑肿瘤,通过联合求解配准参数估计和图像变化标记问题,提高肿瘤跟踪的准确性和效率。文章同时分析了两种方法的优势与挑战,并提出了未来研究方向,旨在为脑肿瘤的诊断和治疗提供更可靠的工具。

defi6farmer的博客 115

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...

满月照亮的路 215

用 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执行,优化性能。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 254

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"...

weixin_33816821的博客 153

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

01BFS:Three States

遇到道路,权值为1,遇到国家,权值为0

2403_86817821的博客 228

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 &lt;...

张松超的博客 736

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.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...

张松超的博客 536

Codeforces 346D Robot Control(01BFS)

题意 有一个 \(N\) 个点, \(M\) 条边的有向图, 初始有一个机器人在 \(1\) 号点. 每个时刻, 这个机器人会随机选择一条从该点出发地边并通过.当机器人到达点 \(N\) 时, 它就会自动关闭. 然而这个机器人如果在某个时刻到达自己曾经到过的点的话, 它就会爆炸. 因此, 你决定对机器人实施一些命令, 让它在某些时候按照规定的边走, 而非随机选择. 问对机器人最少使用多少条命令可以...

weixin_30663471的博客 202

codeforces 1063B. Labyrinth 【01bfs】

题目大意:在一个地图上,有些点不能走,有些点可以走,向左走向右走会有花费,向上和向下没有,现在给定起点,和向左走、向右走的最多步数,问能够走到的点有多少个 题目分析:这个题如果直接bfs 去搜的话,没有办法很好的更新到达某个点最少需要多少个向左走,所以我们用bfs跑一个最短路,dist[i][j] 表示达到 (i,j)这个点最少需要向左走的步数,那么向右走的步数就为 j-c0+dist[i][j]...

beckyUp的博客 522

Codeforces 1340 C (01BFS)

Codeforces 1340 C (01BFS) 题意:你要从0走到n,红绿灯交替,绿灯可以随便走,红灯

qq_43653111的博客 459

【01BFS+思维】Codeforces Round #516 D. Labyrinth

【01BFS+思维】Codeforces Round #516 D. Labyrinth 题意: 给出一个迷宫,限定能往左走和往右走的次数分为为l,r,上下走不限,迷宫中能走的范围最大时多少格子? 思路: 采用双端队列,BFS的时候优先上下走放在双端队列首部,左右走放在队列尾部,这样可以保证走的方法最优。 #include&lt;bits/stdc++.h&gt; using namespace ...

Bryce1010's Blog 474

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​...

Link_Ray的博客 534

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

ruclion的专栏 567

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_

cosx_的博客 1874

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

新月 999

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

勇敢前进的ACMer 521
上一篇: D - Destination Unknown Gym - 100625D -最短路
下一篇: P1120 小木棍 [数据加强版]-搜索+减枝
ID_BePosit
博客等级 码龄9年 76粉丝 647原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值