FZU - 2150 两点BFS 技巧

fzu 2150 Fire Game 【技巧BFS】 题目: fzu 2141 Sub-Bipartite Graph (贪心) 阅读详情

题目链接
思路
题意非常简单,最多两个点同时开始烧,最少的花费时间。
暴力枚举一下,我的做法是使用一个标记来记录两个火堆的到达时间以及各自烧了多少。写完之后看了题解。发现有更简单的做法就是不考虑哪个火堆烧的,只记录是否被烧到以及烧到该点的最短时间。

#include <iostream>
#include <cstdio>
#include <algorithm>
#include<queue>
#include <cstring>
using namespace std;

const int inf = 0x7ffffff;

char mp[12][12];
int vis[12][12];
int dir[4][2] = {0,1,0,-1,1,0,-1,0};
int ans;
int n,m;
int total;

struct node {
    int x,y,s;
    node( int _x,int _y,int _s ) {
        x = _x;
        y = _y;
        s = _s;
    }
};

void bfs( int x1,int y1,int x2,int y2 )
{
    memset( vis,0,sizeof vis );
    vis[x1][y1] = vis[x2][y2] = 1 ;
    int cnt = (x1==x2&&y1==y2)?1:2;
    if ( cnt==total ) {
        ans = 0 ;
        return ;
    }
    int cnt1 = 1,cnt2 = 1 ;
    queue<node> que;
    que.push(node(x1,y1,0));
    que.push(node(x2,y2,0));
    while ( !que.empty() ) {
        int t1 = 0 , t2 = 0 ;
        while ( cnt1-- ) {
            node t = que.front();
            que.pop();
            for ( int i=0; i<4; i++) {
                int tx = t.x+dir[i][0];
                int ty = t.y+dir[i][1];
                if ( tx>=0&&ty>=0 && tx<n && ty<m && mp[tx][ty]=='#' && vis[tx][ty]==0 ) {
                    ++cnt;
                    if ( cnt==total ) {
                        ans = min(ans,t.s+1);
                    }
                    ++t1;
                    vis[tx][ty] = 1;
                    que.push(node(tx,ty,t.s+1));
                }
            }
        }

        while ( cnt2-- ) {
            node t = que.front();
            que.pop();
            for ( int i=0; i<4; i++) {
                int tx = t.x+dir[i][0];
                int ty = t.y+dir[i][1];
                if ( tx>=0&&ty>=0 && tx<n && ty<m && mp[tx][ty]=='#' && vis[tx][ty]==0 ) {
                    ++cnt;
                    if ( cnt==total ) {
                        ans = min(ans,t.s+1);
                    }
                    ++t2;
                    vis[tx][ty] = 1;
                    que.push(node(tx,ty,t.s+1));
                }
            }
        }
        cnt1 = t1;
        cnt2 = t2;
    }
}
int main()
{
    int T;
    cin>>T;
    for ( int t=1; t<=T ; t++ ) {
        scanf("%d%d",&n,&m);
        total = 0 ;
        for ( int i=0;i<n;i++ ) {
            for ( int j=0; j<m; j++ ) {
                scanf(" %c",&mp[i][j]);
                if ( mp[i][j]=='#' )
                    ++total;
            }
        }

        ans = inf;
        for ( int i=0; i<n; i++ ) {
            for ( int j=0; j<m; j++ ) {
                if ( mp[i][j]=='#' ) {
                    for ( int k=0; k<n; k++ ) {
                        for ( int l=0; l<m; l++ ) {
                            if ( mp[k][l]=='#' ) {
                                bfs( i,j,k,l );
                            }
                        }
                    }
                }

            }
        }
        if ( ans==inf )
            ans = -1 ;
        printf("Case %d: %d\n" , t , ans);
    }

    return 0 ;
}
SAP-FICO LSMW实战:批量导入财务凭证与固定资产主数据(AS91)的完整指南 本文详细介绍了SAP-FICO中LSMW工具在批量导入财务凭证与固定资产主数据(AS91)的完整流程与实战技巧。从基础概念、环境准备到财务凭证导入全流程,特别针对AS91历史资产导入的日期逻辑和关键字段映射提供了专项指南,并分享了常见错误排查与性能优化建议,帮助用户高效完成SAP数据迁移任务。 阅读详情

相关推荐

在VM虚拟机的MobaXterm下安装JDK17

本文介绍了在Linux系统下安装配置JDK17的完整步骤:1)从Oracle或OpenJDK官网下载Linux版JDK17压缩包;2)上传至/usr/local目录;3)解压安装包;4)通过编辑/etc/profile文件配置环境变量,添加JAVA_HOME和PATH路径;5)使用source命令使配置生效;6)通过javac -version验证安装是否成功。整个过程涵盖了从下载到环境配置的完整流程,确保Java开发环境正确设置。

qq_2937655951的博客 442

FZU - 2150 Fire Game(暴力+广搜)

题目链接:http://acm.fzu.edu.cn/problem.php?pid=2150点击打开链接 Problem 2150 Fire Game Accept: 2540    Submit: 8781 Time Limit: 1000 mSec    Memory Limit : 32768 KB  Problem Description Fat bro

xuejye的博客 439

图解5G HARQ-ACK反馈:从DCI解析到PUCCH发送的完整数据流

本文详细解析了5G通信系统中HARQ-ACK反馈机制的完整流程,从DCI解码到PUCCH发送的实战指南。重点介绍了HARQ-ACK码本生成、DCI关键参数解读以及PUCCH资源映射等核心技术环节,帮助工程师深入理解5G NR中的数据传输可靠性保障机制。

weixin_27722377的博客 396

FZU2150-Fire Game (双点BFS)

题目链接:https://vjudge.net/problem/FZU-2150 题意:最多可以选择两处火源,要把整个地图上的草地都点燃,火可以往上下左右四个方向扩散,能否把所有的草地都点燃,能的话输出最少时间,不能输出-1;'#'代表草地,'.'表示空地,空地不会起火。 思路:因为地图很小,所以暴力枚举两个起火点然后两个点同时进行BFS。因为不知道终点所以我们需要把走到每一个点的时间都存下来...

sugarbliss 709

深入浅出:.sh文件在Linux系统中的实战应用与技巧

本文深入浅出地介绍了.sh文件在Linux系统中的实战应用与技巧。从基础概念入手,详细讲解了Bash脚本的运行方法、权限管理,并通过编写自动化备份脚本等实例,展示了如何利用Shell脚本提升工作效率。文章还涵盖了脚本调试、错误处理以及函数、参数解析等进阶技巧,帮助读者从入门到精通,掌握这一强大的自动化工具。

weixin_29243279的博客 352

simulink求解器选择的小tip

给出了simulink选择求解器的一种tip,与积分初值有关。

高能阿博特的博客 2055

Bfs1.4(两点之间最短距离)

按照象棋中马走的方向,判断两点间最短距离或不可到达; http://poj.org/problem?id=2243 #include&lt;iostream&gt; #include&lt;queue&gt; #include&lt;cstring&gt; using namespace std; const int maxn=1001+5; int dx[]={-2,-2,-1,-1,1,...

lanshan1111的博客 818

【机器视觉】基于深度学习的托盘PCB识别与计数(有无、正反)

工业机器视觉是指在制造业和工业环境中使用计算机视觉技术来执行检测、测量、识别和控制任务。它结合了硬件(如相机、镜头、光源)与软件(图像处理算法)来自动完成传统上需要人工视觉的任务,从而提高生产效率、产品质量以及工作安全性。工业机器视觉系统通常具有高精度、高速度和高可靠性,能够适应恶劣的工作环境。

专注上位机开发、机器视觉、机器学习、嵌入式软硬件开发 1万+

E - Fire Game (两点bfs)

Fat brother and Maze are playing a kind of special (hentai) game on an N*M board (N rows, M columns). At the beginning, each grid of this board is consisting of grass or just empty and then they start

梦初始的地方,它也需要生根发芽。 1835

9.6华为OD机试真题 新系统【仓储货物有序出库】

华为OD机试真题 新系统【仓储货物有序出库】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题 【仓储货物有序出库】多语言题解。

qq_45776114的博客 891

简谈基于FPGA的千兆以太网设计

简谈基于FPGA的千兆以太网设计 今天给大侠带来简谈基于FPGA的千兆以太网设计,话不多说,上货。 今天我们来简单的聊一聊以太网,以太网在FPGA学习中属于比较高级的内容了,有些大侠肯定会感觉以太网学习起来非常不容易。其实,我可以告诉大家,前期学习的基础打扎实了,后期的学习也没那么难。总之就是说难没那么难,说容易也不是那么容易。那么,言归正传,下面让我们一起来聊一聊以太网的学习。 说起以太网,大家可能就会想到百兆以太网、千兆以太网以及万兆以太网等等。局域以太网从10M开始发展,经历几多的变迁,发展到现

3621

两点搜索 FZU - 2150 Fire Game 两点BFS

两点搜索 FZU - 2150 Fire Game 两点BFS 题意: 在一个木板上有许多方格,每一个方格里面放有不同的东西,一种是草用‘#’表示另一种是‘.’表示什么都没有,有两个人可以分别去点燃其中的一个方格里的草,然后每隔一分钟火势会蔓延到与他相邻的上下左右四个格。‘.’的地方火势不可以蔓延过去。 如果可以将里面的草全部烧完,要求解最小的时间是多少 否则 输出 -1; 思路: 最多只可以点两...

laaahu的博客 413

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

fzu 2150 Fire Game(BFS)

题目链接:fzu 2150 Fire Game 题目大意:有一块空地上有些草堆‘#’,两个小伙伴想要在这片地上玩耍,然后就要烧掉这些草堆,相邻的草堆可以相互引燃,两个人可以分别选择一块草堆点燃,问说最少需要多少时间才能烧光草堆(每人只能点一次) 解题思路:枚举两个位置同时做为起点,然后BFS,注意有一个坑点就是说草堆的个数少于2的时候,枚举不到两个起点,但是是可以烧光草堆的。

不慌不忙、不急不躁 2374

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

fzu 2150 Fire Game

fzu 2150 Fire Game 题目大意: 给出一个m*n的图,‘#’表示草坪,‘ . ’表示空地,然后可以选择在任意的两个草坪格子点火,火每 1 s会向周围四个格子扩散,问选择那两个点使得燃烧所有的草坪花费时间最小? 具体思路: 数据范围较小,直接枚举两点选择的任意情况,分别进行bfs。取最优解就行 详细: 枚举两个人可能选的坐标情况,作为不同的初始状态 对每个初始状态进行bfs搜索,得到...

指弹键盘哼民谣 749

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

FZU_2150_(BFS)

FZU 2150 题意:随便两个出发点,用最短时间遍历所有草地,不能遍历所有草地输出-1,可以遍历则输出最短时间, 4层循环枚举所有出发点,更新最短时间, #include <iostream> #include <string.h> #include <queue> using namespace std; int next1[4][2] = {0,1...

_llc的博客 231

FZU 2150 Fire Game(BFS)

题目链接:FZU 2150 Fire Game BFS。

fobdddf的专栏 2529

FZU 2150 Fire Game (双起点BFS)

Fat brother and Maze are playing a kind of special (hentai) game on an N*M board (N rows, M columns). At the beginning, each grid of this board is consisting of grass or just empty and then they start

LiQiyao的博客 1367

FZU 2150 Fire Game(bfs--两个起点)

- FZU 2150 -

Pandora_heart的博客 309

I - Fire Game FZU - 2150(多起点BFS)

I - Fire Game FZU - 2150 Fat brother and Maze are playing a kind of special (hentai) game on an N*M board (N rows, M columns). At the beginning, each grid of this board is consisting of grass or jus...

石旭先森的博客 636

FZU 2150 Fire Game (BFS)

题目链接: FZU 2150 Fire Game (BFS) 题目大意: n* m 场地,#表示草坪 ,每次选两个草坪,可以向周围四块草丛扩展,扩散时间为1秒,求最少时间,扩散整个草坪. 思路: 穷举:两个点组合,之后bfs选最小 Description Fat brother and Maze are playing a kind of special (hentai) game

Dextrad_ihacker的博客 1162

FZU2150 fire 双搜bfs

题目链接:http://acm.fzu.edu.cn/problem.php?pid=2150 题意:在任意两处点火,求最短时间烧光所有草堆。 规模:1 <= T <=100, 1 <= n <=10, 1 <= m <=10 类型:暴力+双搜 分析:题目很好理解,枚举两个起点进行双搜就好。但以前没有敲过双搜,中间出了不少状况,wa了很多发,主要问题是在“如何使两个queue完成当前时间下的

spring_3_shine的博客 455

FZU 2150 Fire Game(点火游戏)

FZU2150FireGame(点火游戏) TimeLimit:1000mSecMemoryLimit:32768KB ProblemDescription - 题目描述   Fat brother and Maze are playing a kind of special (hentai) game on an N*M board ...

221

FZU-Problem 2150 Fire Game(枚举+BFS)

FZU-Problem 2150 http://acm.fzu.edu.cn/problem.php?pid=2150 Fat brother and Maze are playing a kind of special (hentai) game on an N*M board (N rows, M columns). At the beginning, each grid of this ...

夏日蹲坑的博客 207

FZU 2150(优化BFS)

题目链接:戳此进入 思路:数据范围比较小,每次进两个点BFS,搜完后判断一下,是否还有没有烧的草,如果有就标记。 优化思路:纯暴力会有点重复,我们只需要保证这两个点如果搜索过就跳过。 优化AC :时间差一半 #include<iostream> #include<cstring> #include<string.h> #include<queue...

Harington的博客 623

FZU Problem 2150 Fire Game (BFS,java)

Problem 2150 Fire Game Accept: 2070    Submit: 7235 Time Limit: 1000 mSec    Memory Limit : 32768 KB Problem Description Fat brother and Maze are playing a kind of special (hentai) gam

ysCover 713

Fire Game(FZU 2150) —— BFS

Fire Game (FZU 2150) —— BFS

剑洋侠客 926
上一篇: 1091 线段的重叠 区间重叠
下一篇: ZOJ 4020 Traffic Light 浙大校赛 BFS
Peppermint__
博客等级 码龄10年 4粉丝 72原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值