HDU 1045 Fire Net 【连通块的压缩 二分图匹配】

政府科技管理者如何提升科技成果转化项目进场交易的备案效率?.docx 政府科技管理者如何提升科技成果转化项目进场交易的备案效率? 立即下载

题目:http://acm.hdu.edu.cn/showproblem.php?pid=1045

Fire Net

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 15715    Accepted Submission(s): 9519


Problem Description
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 that has four openings through which to shoot. The four openings are facing North, East, South, and West, respectively. There will be one machine gun shooting through each opening. 

Here we assume that a bullet is so powerful that it can run across any distance and destroy a blockhouse on its way. On the other hand, a wall is so strongly built that can stop the bullets. 

The goal is to place as many blockhouses in a city as possible so that no two can destroy each other. A configuration of blockhouses is legal provided that no two blockhouses are on the same horizontal row or vertical column in a map unless there is at least one wall separating them. In this problem we will consider small square cities (at most 4x4) that contain walls through which bullets cannot run through. 

The following image shows five pictures of the same board. The first picture is the empty board, the second and third pictures show legal configurations, and the fourth and fifth pictures show illegal configurations. For this board, the maximum number of blockhouses in a legal configuration is 5; the second picture shows one way to do it, but there are several other ways. 



Your task is to write a program that, given a description of a map, calculates the maximum number of blockhouses that can be placed in the city in a legal configuration. 
 

 

Input
The input file contains one or more map descriptions, followed by a line containing the number 0 that signals the end of the file. Each map description begins with a line containing a positive integer n that is the size of the city; n will be at most 4. The next n lines each describe one row of the map, with a '.' indicating an open space and an uppercase 'X' indicating a wall. There are no spaces in the input file. 
 

 

Output
For each test case, output one line containing the maximum number of blockhouses that can be placed in the city in a legal configuration.
 

 

Sample Input
4 .X.. .... XX.. .... 2 XX .X 3 .X. X.X .X. 3 ... .XX .XX 4 .... .... .... .... 0
 

 

Sample Output
5 1 5 2 4
 

 

Source
 

 

题意概括:

给一张 N*N的图, 在上面放炮车,要求炮车不能在同一行或者同一列(除非中间有阻碍物),求最多能放多少炮车。

 

解题思路:

按照行和列,把会冲突的点压缩成一个点,对压缩后的 行和列的点 进行二分图匹配。

 

AC code:

 1 #include <cstdio>
 2 #include <iostream>
 3 #include <algorithm>
 4 #include <cstring>
 5 #include <vector>
 6 #define INF 0x3f3f3f3f
 7 using namespace std;
 8 const int MAXN = 15;
 9 char str[MAXN][MAXN];
10 int g[MAXN][MAXN];
11 int linker[MAXN];
12 bool used[MAXN];
13 int xx[MAXN][MAXN], yy[MAXN][MAXN];
14 int uN, vN;
15 
16 bool Find(int x)
17 {
18     for(int i = 1; i <= vN; i++){
19         if(!used[i] && g[x][i]){
20             used[i] = true;
21             if(linker[i] == -1 || Find(linker[i])){
22                 linker[i] = x;
23                 return true;
24             }
25         }
26     }
27     return false;
28 }
29 
30 int match()
31 {
32     int ans = 0;
33     memset(linker, -1, sizeof(linker));
34     for(int i = 1; i <= uN; i++){
35         memset(used, 0, sizeof(used));
36         if(Find(i)) ans++;
37     }
38     return ans;
39 }
40 
41 int main()
42 {
43     int k, row, col;
44     while(~scanf("%d", &k) && k){
45         for(int i = 0; i < k; i++){
46             scanf("%s", str[i]);
47         }
48         memset(xx, 0, sizeof(xx));
49         memset(yy, 0, sizeof(yy));
50         memset(g, 0, sizeof(g));
51         row = col = 0;
52         for(int i = 0; i < k; i++){             //压缩连通块
53             for(int j = 0; j < k; j++){
54                 if(str[i][j] == '.'){
55                     if(j == 0 || str[i][j-1] == 'X') row++;
56                     xx[i][j] = row;
57                 }
58 
59                 if(str[j][i] == '.'){
60                     if(j == 0 || str[j-1][i] == 'X') col++;
61                     yy[j][i] = col;
62                 }
63             }
64         }
65         for(int i = 0; i < k; i++){
66                 for(int j = 0; j < k; j++){
67                     if(str[i][j] == '.')
68                         g[xx[i][j]][yy[i][j]] = 1;
69             }
70         }
71         vN = col, uN = row;
72         printf("%d\n", match());
73     }
74     return 0;
75 }
View Code

 

科技中介服务机构如何通过智能体技术提升服务效率与专业度?.docx 科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。 立即下载

相关推荐

产业园区如何高效对接企业技术需求并推动成果转化?观点作者:科易网-国家科技成果转化(厦门)示范基地.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

HDU 1045 Fire Net [二分图匹配]

HDU 1045 Fire Net [二分图匹配]

ACTerminate的博客 460

山区道路边坡落石隐患检测数据集VOC+YOLO格式241张1类别.md

【重要提示】本页面仅为资源介绍,不含外部下载地址 亲爱的 优快云 用户: 感谢你浏览本资源页面,在这里提前向大家说明相关情况,避免后续产生误解。本资源我设置的初衷是 0 积分免费分享文档介绍,希望可以无偿给到有需要的朋友。但 优快云 平台存在自动调控机制,系统会根据资源下载热度、文件体积、平台规则等因素,自动修改资源所需下载积分,页面显示为 1 积分、2 积分或更高积分都属于平台自动调整结果,并非我手动修改设置,我没有权限自主锁定积分数值。 如果你打开页面后,发现下载所需积分不为 0,请务必谨慎考虑是否下载。一旦你支付积分完成下载,后续遇到资源内容和描述不符、文件损坏等问题,我无法承担对应的积分损失,也没有渠道为你办理积分退还。在此强烈建议,只有页面明确显示 0 积分的时候,再进行下载操作。 同时特别说明:这份资源介绍文案里,没有附带任何外部下载地址。资源本身是通过 优快云 官方上传通道上传的附件,正常情况下直接点击页面自带的下载按钮即可获取文件。页面找不到外部下载链接属于正常情况,并非资源缺失。 如果因为平台积分显示异常,导致你被扣取积分,积分退款、积分异常相关问题,请直接联系 优快云 官方客服咨询处理。平台规则由官方制定,我无法干预积分变动,望各位理解。

HDU-1045-Fire Net(二分图最大匹配 / 状态压缩)

题意:和棋盘游戏(HDU - 1281)差不多,区别就是这里的墙可以阻挡子弹。 1、最大匹配 思路:仍然是列和相同一行的点之间的匹配。因为墙可以阻挡子弹,那么如果一行中的点被一堵墙隔开,那么可以“增加一行”,把他们标记为不同行的点;相同的,如果同一列的点被一堵墙隔开,那么可以“增加一列”,并把这两部分点分别与不同的“两列”相关联,这样这一列中就可以匹配两个点了。一题目中的地图为例: 每个点的“行...

qq_43803508的博客 268

高空作业栏杆检测数据集VOC+YOLO格式230张3类别.md

【重要提示】本页面仅为资源介绍,不含外部下载地址 亲爱的 优快云 用户: 感谢你浏览本资源页面,在这里提前向大家说明相关情况,避免后续产生误解。本资源我设置的初衷是 0 积分免费分享文档介绍,希望可以无偿给到有需要的朋友。但 优快云 平台存在自动调控机制,系统会根据资源下载热度、文件体积、平台规则等因素,自动修改资源所需下载积分,页面显示为 1 积分、2 积分或更高积分都属于平台自动调整结果,并非我手动修改设置,我没有权限自主锁定积分数值。 如果你打开页面后,发现下载所需积分不为 0,请务必谨慎考虑是否下载。一旦你支付积分完成下载,后续遇到资源内容和描述不符、文件损坏等问题,我无法承担对应的积分损失,也没有渠道为你办理积分退还。在此强烈建议,只有页面明确显示 0 积分的时候,再进行下载操作。 同时特别说明:这份资源介绍文案里,没有附带任何外部下载地址。资源本身是通过 优快云 官方上传通道上传的附件,正常情况下直接点击页面自带的下载按钮即可获取文件。页面找不到外部下载链接属于正常情况,并非资源缺失。 如果因为平台积分显示异常,导致你被扣取积分,积分退款、积分异常相关问题,请直接联系 优快云 官方客服咨询处理。平台规则由官方制定,我无法干预积分变动,望各位理解。

ti-cgt-c2000-22.6.0.LTS-windows-x64-installer

ti-cgt-c2000-22.6.0.LTS-windows-x64-installer

HDU 1045 Fire Net(二分图最大匹配)

题意:给出一张图,图中'X'表示wall,'.'表示空地,可以放置blockhouse ,同一条直线上只能有一个blockhouse,除非有wall隔开,问在给出的图中最多能放置多少个blockhouse 。  思路:缩点+二分图最大匹配。把每一行的连续空白区域和每一列的连续空白区域分别缩点,对于每一块空地,它都是横竖两个“点”的交点,我们给这两个点之间连一条边,那么问题就转化为了求二分图的最大

GODSPEED 592

光伏板太阳能板尘土灰尘脏污检测数据集VOC+YOLO格式1006张3类别.md

【重要提示】本页面仅为资源介绍,不含外部下载地址 亲爱的 优快云 用户: 感谢你浏览本资源页面,在这里提前向大家说明相关情况,避免后续产生误解。本资源我设置的初衷是 0 积分免费分享文档介绍,希望可以无偿给到有需要的朋友。但 优快云 平台存在自动调控机制,系统会根据资源下载热度、文件体积、平台规则等因素,自动修改资源所需下载积分,页面显示为 1 积分、2 积分或更高积分都属于平台自动调整结果,并非我手动修改设置,我没有权限自主锁定积分数值。 如果你打开页面后,发现下载所需积分不为 0,请务必谨慎考虑是否下载。一旦你支付积分完成下载,后续遇到资源内容和描述不符、文件损坏等问题,我无法承担对应的积分损失,也没有渠道为你办理积分退还。在此强烈建议,只有页面明确显示 0 积分的时候,再进行下载操作。 同时特别说明:这份资源介绍文案里,没有附带任何外部下载地址。资源本身是通过 优快云 官方上传通道上传的附件,正常情况下直接点击页面自带的下载按钮即可获取文件。页面找不到外部下载链接属于正常情况,并非资源缺失。 如果因为平台积分显示异常,导致你被扣取积分,积分退款、积分异常相关问题,请直接联系 优快云 官方客服咨询处理。平台规则由官方制定,我无法干预积分变动,望各位理解。

HDU 1045 Fire Net (二分图HK)

https://vjudge.net/problem/HDU-1045 把图中连续的行和列都缩成点,因为每个行和列交点处必定不与别的组合冲突。 这样先把符合条件的边加上,最后跑HK就行 以后不管多么简单的题都要用HK,因为实在是比匈牙利快太多了 #include<iostream> #include<cstring> #include<cstdio> ...

STOP 161

无功优化电网故障下分布式能源系统多目标优化[并网转换器(GCC)](Matlab代码&Simulink实现)

内容概要:本文详细介绍了基于Plecs或Simulink平台构建的全桥LLC谐振变换器仿真模型,重点研究了变频控制与移相混合控制策略下的闭环系统设计与参数优化方法。内容涵盖全桥LLC谐振变换器的工作原理、小信号建模技术(如扩展描述函数EDF)、PID控制器参数整定过程以及软开关实现条件,并通过仿真验证了系统在稳态输出性能、动态响应特性(如启动过程与负载阶跃)和频率调节平滑性等方面的优良表现。同时提供了完整的仿真模型、参数设计报告及说明文档,有助于读者复现结果并深入理解控制机制与建模细节。; 适合人群:具备电力电子、自动控制等相关专业知识背景,从事高效率电源设计、新能源变换系统研发的工程师及高等院校电力电子与电力传动方向的研究生。; 使用场景及目标:①掌握LLC谐振变换器的小信号建模与闭环控制系统设计方法;②学习并应用变频与移相结合控制策略提升电源转换效率;③支撑科研项目中的电力电子系统仿真验证或学位论文课题开发;④复现高水平学术论文中关于谐振变换器的控制方案与性能分析。; 阅读建议:建议结合所提供的仿真模型与参数设计资料,边运行仿真边对照文章内容理解控制逻辑与建模过程,特别关注小信号模型的建立方法与PID控制器参数整定环节,以增强对实际工程问题的分析与设计能力。

高效搭建微信公众号爬虫全流程

微信公众号爬虫系统成功完成功能测试验证。该系统具备完整的数据采集与管理能力,支持多公众号内容爬取、数据存储与统计分析。通过命令行界面可执行爬取操作(如量子位、新智元等公众号),查看最新文章列表和系统统计信息。测试显示SQLite数据库正常存储数据,所有核心功能(多源支持、文章检索、数据统计)均运行良好。系统采用模块化设计,扩展性强,为后续接入真实API或网页爬取奠定了坚实基础,是AI内容聚合的优质开发平台。🎉

weixin_44975687的博客 1556

HDU 1045 Fire Net 二分匹配

题意:给一个n*n的矩阵,‘X’表示城墙,’.'表示空地,可以在空地上建造碉堡,两碉堡不能处于同一行或者同一列,除非中间有城墙隔着,求能够建造的碉堡的最大个数 思路:这题可以通过缩点来用二分匹配解决(强),把每行和每列中的所有连着的空地缩成一个点(显然两个碉堡不能处于连续的空地),若某行和某列上的点为空地,在各自缩成的点之间连一条边,求出所有行缩成的点和列缩成的点的最大匹配即可 #include&...

qq_42397248的博客 183

Oracle到金仓数据库信创改造迁移实施规划方案

**性能测试和优化**:对金仓数据库的性能进行测试,根据业务负载情况进行必要的调优,确保系统能够稳定高效运行。- **数据兼容性**:评估Oracle数据库中的数据结构和金仓数据库的兼容性,明确需要重构的数据模型。- **性能测试**:通过对金仓数据库的性能测试,预估在实际业务环境下的表现,是否能达到业务需求。- **工具选择**:选择适合的迁移工具,如金仓数据库提供的迁移工具,能够提升迁移效率和准确性。- **全面迁移**:在初步迁移成功后,进行全面数据迁移,确保所有数据完整迁移到金仓数据库上。

hdrhdrjdididrr的博客 482

HDU 1045 Fire Net(二分图匹配或爆搜)

  题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1045        题意是有个n*n地图,地图中有空地'.'和墙'X',然后我们要在空地上安置大炮,为了防止大炮打大炮,一行和一列上只能有一台大炮,问最多能放多少大炮。        比较好想的思路就是爆搜,我们用dfs去一个一个搜,然后判断这行和这列是否已经出现过了,因为数据范围不大,所以...

Charles_Zaqdt的博客 306

Windows 10/11 安装 HYSPLIT 气象模型全攻略(附必备工具包下载清单)

本文提供了一份详尽的Windows 10/11系统下HYSPLIT气象模型安装与配置全攻略。指南涵盖了从核心认知、必备工具包(Tcl/Tk、ImageMagick)下载,到分步安装、环境变量设置及首次运行验证的完整流程,旨在帮助研究者和学生高效部署这一用于大气轨迹模拟与污染物扩散分析的专业工具。

weixin_28335283的博客 612

【密码学】生成8位26个字母和数字的全排列(密码字典,密钥)c++代码(非递归高效直接)

生成8位26个字母和数字的全排列(密钥)代码(非递归高效直接) 用C语言或C++,生成一个8位的26个字母和数字的全排列的原代码,例如从:00000000到ZZZZZZZZ。 说明:生成的这个字典会非常大,有36^8条记录,估计要3T的硬盘,跑一个晚上看看         这个方法比递归更高效,更直接。                                                ...

Wu_Being 的优快云 博客 1万+

HDU 1045 Fire Net【二分图匹配】

题目链接 题意 在一个 N∗NN*NN∗N 的图上放置尽可能多的碉堡,碉堡会摧毁同一行,同一列且没有墙壁阻挡的碉堡 题解 对于同一行、同一列,连续的 ’.‘ 可缩成一个点,然后在新图上算最大匹配就行 #include<iostream> #include<sstream> #include<string> #include<queue> #include<map> #include<unordered_map> #include<

qq_50554695的博客 124

撸毛笔记-朴朴超市 v1.01

朴朴超市 v1.01脚本地址:自动签到和组队赚朴分, 朴分可以抵扣50%的金额组队瓜分需要4人成团, 每个号每天只能开团和入队各一次每天跑一两次即可使用扫码或自己想办法捉refreshToken扫码获取token: (先微信进入朴朴超市小程序并登录注册过账号再扫码)把获取的refreshToken和备注(非必须)填到文件pupuCookie.txt里(第一次运行会自动创建), 多账号换行或&或@隔开。

xiaoshun007的专栏 1811

HDU 1045 Fire Net

网上搜的题解除了暴搜就是二分图匹配     我试了下用状态压缩做做。。。比较乱来 #include #include #include #include using namespace std; char map[5][5]; int n, num; int sta[5][21], the[5][21], l[5], dp[5][21]; void deal(int x) { i

420

嵌入式编程模型 | 原型模式

本文介绍了原型模式在嵌入式传感器网络中的应用。原型模式通过复制现有对象创建新实例,避免了重复初始化开销,适用于设备配置克隆、状态复制等场景。文章以传感器网络为例,展示了原型模式的结构(抽象原型类、具体原型类、客户端)和实现方式,通过C语言代码演示了温度/湿度传感器的克隆过程。该模式能有效提升嵌入式系统资源复用效率,实现快速部署相似配置的传感器节点,同时保持内存优化和配置灵活性。

嵌入式大杂烩 148

利用 SAP Joule 提升 ABAP 开发效率的前提条件与限制全解析

综上,想要在 ABAP Development Tools 中顺利使用 SAP Joule,既要准备好 BTP、IAS、ABAP 系统与 ADT 的版本与信任链,也要理解许可证、配额、语法范围等限制。只有在这些前提全部满足后,Joule 才能真正发挥生成式 AI 的价值,帮助 ABAP 开发者从繁琐模板中解放出来,把注意力投入在业务创新与 Clean Core 改造之上。未来 SAP 还将扩展中文语境、自动修复建议以及跨系统智能代理等功能,值得持续关注。

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

全自动短剧生成流水线设计:从剧本到成片的工程实践

在AIGC内容生产中,单点AI能力通常很强,但真正落地需要将文本生成、语音合成、图像生成与视频拼接组织成一条可运行、可重试、可排查的数据流水线。本文以短剧生成为例,讲解如何通过模块化设计、状态机管理和幂等控制来构建端到端的内容生产链路,并针对角色一致性、FFmpeg合成、任务失败重试等工程难点给出解决方案,帮助开发者在实际项目中快速搭建全自动短剧生成服务。

weixin_33755557的博客 283

AXI_Bus_Matrix_4x4 设计

Signal Source Width(bits) Description AWID Master AWID_WIDTH 写事务ID AWADDR Master

Starry__的博客 3770

HDOJ 1045 Fire Net

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1045 题目大意:对于一个迷宫,其中’X’ 表示wall,‘.’表示空地,可以放置blockhouse,同一条直线上只能有一个blockhouse,除非有wall隔开,问在给出的图中最多能放置多少个blockhouse。   分析题意: 1、  此题有两种解法。第一种:暴力解法。从左往右,从上到

dzyhenry的专栏 754

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

上一篇: POJ Widget Factory 【求解模线性方程】
下一篇: 二分图最大匹配 匈牙利算法
莜莫oO
博客等级 码龄9年 7粉丝 226原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值