HDU 1045 Fire Net

【代码超详解】HDU 1045 Fire Net(建图 + 二分图匹配) 一、题目描述 样例输入: Sample Input 4 .X.. .... XX.. .... 2 XX .X 3 .X. X.X .X. 3 ... .XX .XX 4 .... .... .... .... 0 样例输出: 5 1 5 2 4 二、算法分析说明与代码编写指导 本题的难点在于如何建立正确的图论模型。 一行、一列同时只能有一个炮,除非被墙挡住。炮弹向上下左右发射后,直到被... 阅读详情

题目大意:放置炮台,两个炮台在同行或者同列,则不能直接摆置,中间要有墙才能放置;

解题思路:用dfs找出每种摆置炮台的方法,记录最多炮塔数,本题的图规格比较小,所以dfs耗时不高。

/*HDU 1045 Fire Net*/
#include <iostream>
#include <cstring>
#include <queue>
using namespace std;

char gmap[4][4];
int maxNum=0;
int mx,m;


int canPut(int a,int b)
{
    int i;
    for(i=a;i>=0;i--)
    {
        if(gmap[i][b]=='b')return 0;
        if(gmap[i][b]=='X')break;
    }
    for(i=b;i>=0;i--)
    {
        if(gmap[a][i]=='b')return 0;
        if(gmap[a][i]=='X')break;
    }
    return 1;
}

void dfs(int n,int num)
{
    int y=n%m;
    int x=n/m;
    if(n==m*m)
    {
        if(maxNum<=num)    
        {
            maxNum=num;
            return;
        }
    }    
    else
    {
        if(canPut(x,y)&&gmap[x][y]=='.')
        {
            gmap[x][y]='b';
            dfs(n+1, num+1);
            gmap[x][y]='.';
        }
        dfs(n+1, num);        
    }
}

int main(int argc, char *argv[])
{
    while(cin>>m)
    {
        if(!m) break;
        memset(gmap, '.', sizeof(gmap));//初始化gmap 
        for(int i=0; i<m; i++)
            for(int j=0; j<m; j++)
            {
                cin>>gmap[i][j];
            }
        maxNum=0;
        mx=0;
        dfs(0, 0);
        cout<<maxNum<<endl;
    
    }
    return 0;
}


 

【深度学习基础】一篇弄懂训练集、验证集和测试集(呕心沥血版) 在深度学习中,训练集、验证集和测试集是构建和评估模型的核心组成部分。训练集用于模型的学习和参数优化,验证集帮助调整超参数和防止过拟合,而测试集则用于最终评估模型的泛化性能。正确划分和使用这三类数据集,对于开发高效、可靠的深度学习模型至关重要。本文将深入解析它们的作用、划分方法以及在实际应用中的注意事项,帮助你全面理解并掌握数据集的科学使用方法,从而提升模型的实际表现。 阅读详情

相关推荐

Python爬虫实战:用Selenium+ChromeDriver批量抓取政府网站政策文件(附完整代码)

本文详细介绍了使用Python的Selenium和ChromeDriver进行政府网站政策文件批量抓取的实战技巧。从环境配置、动态页面元素定位到分页机制破解和反爬虫策略,提供了完整的解决方案和代码示例,帮助开发者高效获取结构化政策数据。

weixin_42531710的博客 265

HDU1045 - Fire Net (深搜)

题目链接思路 代码思路这道题其实是一道很经典的二分图匹配问题,在我看了后准备放弃的时候,发现这道题的数据量最大是 4 ,所以这就给我们暴搜提供了可能。最多只有16个方块,所以直接从第一个开始枚举,以后的每一步都分两种情况,放和不放,在最后出界的时候记录一下最大值就行了。具体实现见代码代码#include <cstdio> #include <algorithm>using namespace std

dcf_xyz的专栏 427

Python表白代码:“ 星光月夜烟花皆归你,我也归你”(满天烟花盛开、附番外玫瑰)

导语 "慢品人间烟火色 闲观人间岁月长" ———致自己​​​ ​ ???? 遇见我以后,我们的故事就开始了,愿你历经山河,仍觉得人间值得????。 ​ 星光月夜烟花皆归你,我也归你。关于烟花????大家都​知道多少?有多少表白故事情节都发生在烟 花下,想必木木子????不用说大家也知道叭~​​ 今天这则小短文就是关于烟花的故事!你准备好跟我一起进入烟花的世界了嘛? ​正文 “每一句文案,都有一个故事,你仔细听” ​ 1)环境安装???? 准备好:.

顾木子吖的博客 5万+

HDU ACM 1045 Fire Net (深搜DFS)

http://acm.hdu.edu.cn/showproblem.php?pid=1045 题意:题目给出一个n和一幅N*N的图,图中包含'.','X'两种字符,要求在上面放上碉堡,碉堡能攻击他所在的行和列,但不能攻击墙,求最多能放多少个碉堡. 开始每放一个,就把那一位置所在的行列标记,直到遇到墙或边界停止. 这种方法很笨,但由于数据量小,也能AC. View Code...

weixin_30667301的博客 151

别再为数据发愁:5分钟理解事件相机原理,并自己动手生成事件图像

本文深入浅出地解析了事件相机的工作原理,并提供了从静态图像生成事件数据的实用方法。通过Python代码示例,读者可以快速掌握如何模拟事件相机的输出,应用于机器人导航、自动驾驶等领域,解决数据获取难题。

weixin_31458015的博客 300

Android Activity面试题最全解析(5万字长文)

Intent是Android中用于启动活动、服务或广播的一种消息对象。它包含了一系列键值对数据,用于描述操作的目的以及需要传递的信息。IntentString:字符串intfloatlong:基本数据类型Parcelable:实现了Parcelable接口的对象:实现了接口的对象示例代码如下:Java深色版本1// 创建Intent并传递数据");67// 启动新的Activity是一个XML标签,用于定义ActivityService或可以响应的Intent类型。它包含了。

大模型大数据攻城狮的专栏 802

hdu-1045 Fire Net

http://acm.hdu.edu.cn/showproblem.php?pid=1045 题意:题目说在一个特殊的地图里面摆碉堡,但是不能在同一行或者同一列摆一个以上的碉堡除非中间隔了一堵墙。 思路:记住每一次到达最后一个点的可放碉堡数,更新最大值。 #include char map[5][5]; int n,m,max; int pd(int x,int y) { for(

有一种力量叫乐观 598

ORB-SLAM3算法2之EuRoc开源数据集运行ORB-SLAM3生成轨迹并用evo工具评估轨迹

ORB-SLAM3算法1 已成功编译安装ORB-SLAM3到本地,本篇目的是用EuRoc开源数据来运行ORB-SLAM3,并生成轨迹,最后用evo评估工具来评估ORB-SLAM3生成的轨迹和真值轨迹。

重点记录机器人和自动驾驶相关领域的技术,尤其是计算机视觉,视觉SLAM等,不仅有前言文献或必备算法的学习,也会有实际应用的点滴经验 3762

HDU 1045 Fire Net【DFS深搜】

Fire Net Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 9880    Accepted Submission(s): 5739 Problem Description Suppose that we h

ACMer_Shadow的博客 1507

CAPL通过SecMgrCANoeClient.dll实现AES 128

需要加载SecMgrCANoeClient.dll这个动态库,可以在canoe安装路径下Exec32这个文件夹里找。这个库不是哪版canoe都带,canoe15就没有,11,14是有的。我需要用到的是AES 128 ECB nopadding,这里函数介绍说是padding mode PKCS5,但是最后算出的结果是我可以使用的。CAPL中可以使用下列函数实现AES 128的算法。需要注意输入输出字节的长度。

天赐好车的博客 4931

常用元器件使用方法3:电平转换芯片74LVC1T45的使用方法

介绍: 74LVC1T45是一个单位双向可控电平转换芯片。   芯片特性: 1、宽供给电压范围:1.65V到5.5V; 2、3.3V时,可输出24mA电流; 3、最大16uA电能损耗; 4、高噪音抑制;   型号:   引脚: VCC(A) 1 A端和DIR电源 GND 2 地 A 3 数据输入/输出 B 4 ...

snmplink的博客 1万+

HDU 1045 Fire Net

有暴力搜索和二分图匹配两种解题思路。用dfs搜比较容易,而二分图则是一种更为优化的算法。刚刚接触二分图,发现这种思路很巧妙,以后要多加练习。 下面是dfs求法 #include #include using namespace std; char map[5][5]; int visitr[5]; //记录横坐标 int visitl[5]; //记录纵坐标 int maxn,

IQ_IT的专栏 1000

【Segment Anything Model】三:SAM模型微调自定义数据集,更改混合提示方式:点,框,点框混合

1.微调SAM预备知识。

cvxiayixiao的博客 1万+

HDU T1045 Fire Net(待续)

                                    HDU T1045 Fire Net 题解:     八皇后的变题,鄙人一开始思路太不严谨,想着遍历整个图,是‘.’的点,表示可以放置城堡,就把它四个方向上的点都标记掉,遇到‘X’或边界就停止,然后步数+1,回溯的时候,调用的是原函数进行撤回标记。但这样往往犯了大错,因为标记是一样的,撤回标记就有可能会把与前一个城堡的标记...

Mr__Charles的博客 223

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

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

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

HDU 1045 Fire Net

Fire Net 题目链接 Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) Total Submission(s) : 8 Accepted Submission(s) : 7Problem Description Suppose that we have a square city

南风古 361

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

hdu1045 Fire Net (二分图匹配)

分析: 这题的弱化版:ch6802 車的放置 两题的区别在于ch6802禁止的点只是不能放,但是车还是能穿过去的,因此一行最多只能放一个 而hdu1045,也就是这题,禁止的地方是墙,能把两个车隔开 容易想到有墙的存在,一行就可能放两个甚至多个车 如果没有墙,每行共用一个节点标记也就是行数, 有墙的话只要把墙隔开的两边各自标记就行了。 列同理 code: #include<iostream&...

zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 246

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

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

HDU 1045. Fire Net

链接 http://acm.hdu.edu.cn/showproblem.php?pid=1045 题意 在 n∗nn*nn∗n 的图上有一些围墙,放置一些大炮,大炮能攻击上下左右任何距离的其他大炮,但不能穿过围墙,求最多能放多少个互相不会攻击的大炮 思路 按行对每个连通块染色,然后按列对每个连通块染色 对每个点所在的行连通块与列连通块之前连边 跑二分图最大匹配 代码 #include <bits/stdc++.h> #define SZ(x) (int)(x).size() #define A

c4Lnn 的 优快云 博客 136

HDU1045 Fire Net【DFS】

题目链接:HDU1045 Fire Net【DFS】 题意:一个至多4*4的棋盘,棋盘上有一些墙壁,可以阻挡子弹,炮台可以向四个方向发射子弹,问在保证他们不能互相攻击的情况下至多可以放置多少炮台; 分析:搜就对了; #include<bits/stdc++.h> using namespace std; char mp[5][5]; int n,ans; bool check(...

MaJorieL 218

HDU1045 Fire Net

HDU1045 Fire Net http://acm.hdu.edu.cn/showproblem.php?pid=1045 解题思路:本题是加条件变形后的搜索题,中间有检查的成份,弄的题目有点恶心的感觉。 给定一个n*n的地图,图中有“。”和“X”,"X"表示墙,“。”表示空地。可以在空地上修建炮台,当时互相可见的炮台(同行或同列,且中间没有墙隔开)就会互相摧毁对方,造成事故。要求在图中的空地上修建炮台,要使炮台不会互相攻击。要求出最多能修建多少个炮台。地图的大小n<=4.虽然题目比较恶心,还好数

花花的笔记 1341

hdu 1045 Fire Net

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1045 题目大意:给出一个矩阵,X代表墙,要求放x个武器,武器的攻击范围为所在的行和列,求x的最大值。 题目分析:因为看到n最大只有4,因为大二有段时间做PE的原因,马上就想到了状态压缩来表示武器的放置情况,我算了一下复杂度觉得不出意外还是不是超时的就动手写了一下,期间最傻的一次是突然觉得从

happiness Onion 729

HDU1045Fire Net

题目大意:在图上放置炮台,并且炮台之间不能相互威胁(即两个炮台不能中间无阻碍地放置在同行或同列),个人感觉有点像N皇后的问题,只不过进阶的东西就是多了墙 解题思路:做这题时想起了当时做N皇后的解法,只不过多了一步遇到墙壁就停止,不过发现在你不放在这个位置时,准备回溯你要把之前标记的行和列全部清空,问题就来了,如果你在清空标记时遇到有一格同时被两个炮台标记怎么办,这时就换种思路,即你每当要放炮台时

小胡同的诗 287

Fire Net 【HDU - 1045 】

Suppose that we have a square city with straight streets. A map of a city is a square board with n rows and n columns, each representing a street or a piece of wall. A blockhouse is a small castle tha...

Meant_To_Be的博客 188

hdu1045 Fire Net(二分图最大匹配)

//hdu 1045 二分最大匹配 //以行和列为点,可以放的连边,中间有墙的看做不同的行或列。 //求二分图的最大匹配。同一行同一列只能放一个。即连某个点的边只能有一条。 //行和行,列和列之间互不影响。 #include #include #include using namespace::std; const int N=10; char map[N][N]; int g[N][N]; in

野生的TFgirl 1220
上一篇: HDU 1035 RobotMotion
下一篇: HDU 1061 Rightmost Digit
binary001
博客等级 码龄16年 0粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值