poj 3020 Antenna Placement 二分图匹配

POJ3020-Antenna Placement 北大POJ3020-Antenna Placement 解题报告+AC代码 立即下载
黑白染色  然后求二分图最大匹配
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
const int maxn=40+9;
int n,m;
char a[maxn][maxn];
struct
{
    int to,next;
}e[maxn*10*4];
int head[maxn*10],lon;
void edgeini()
{
    memset(head,-1,sizeof(head));
    lon=-1;
}
void edgemake(int from,int to)
{
    e[++lon].to=to;
    e[lon].next=head[from];
    head[from]=lon;
}

int mat[maxn*10],vist[maxn*10];
bool work(int u)
{
//    cout<<u<<endl;
    vist[u]=1;
    for(int k=head[u];k!=-1;k=e[k].next)
    {
        int v=e[k].to;
        if(mat[v]==-1)
        {
            mat[v]=u;
            return true;
        }
    }
    for(int k=head[u];k!=-1;k=e[k].next)
    {
        int v=e[k].to;
        if(vist[mat[v]]) continue;
        if(work(mat[v]))
        {
            mat[v]=u;
            return true;
        }
    }
    return false;
}

int solve()
{
    int ret=0;
    for(int i=1;i<=n;i++)
    for(int j=1;j<=m;j++)
    {
        if((i+j)%2==0)
        {
            memset(vist,0,sizeof(vist));
            ret+=work(i*m-m+j);
        }
//        cout<<i*m-m+j<<endl;
    }
    return(ret);
}



int main()
{
//    freopen("in.txt","r",stdin);
    int tcase;
    scanf("%d",&tcase);
    while(tcase--)
    {
        edgeini();
        memset(mat,-1,sizeof(mat));
        memset(a,0,sizeof(a));
        int ans=0;
        scanf("%d %d",&n,&m);
        for(int i=1;i<=n;i++)
        scanf("%s",&a[i][1]);
        for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
        if(a[i][j]=='*')
        {
            ans++;
            if(a[i+1][j]=='*')
            edgemake(i*m-m+j,i*m+j);
            if(a[i-1][j]=='*')
            edgemake(i*m-m+j,i*m-m-m+j);
            if(a[i][j+1]=='*')
            edgemake(i*m-m+j,i*m-m+j+1);
            if(a[i][j-1]=='*')
            edgemake(i*m-m+j,i*m-m+j-1);
        }
        int ret=solve();
        printf("%d\n",ans-ret);
    }
    return 0;
}


水与光的奇妙“切割之舞”:水导激光切割技术探秘 水导激光切割技术的诞生,是材料加工领域不断追求高精度、高质量加工的成果。传统激光切割技术在加工过程中,材料会因瞬间高温而产生热变形、热影响区大以及切割面粗糙等问题,这些弊端在对一些高精度、热敏性材料的加工中尤为突出 ,迫切需要一种新的技术来克服这些难题。水导激光切割技术的起源可以追溯到 20 世纪 80 年代。1986 年,德国公司 Aesculap-Werke AG 首次提出了将水流引入激光切割过程的创新想法,并制造出首代水导激光设备。不过,当时的技术尚处于雏形阶段,仅仅是在光纤出口添加了一小柱水流,激光 阅读详情

相关推荐

SAP EWM 内向交货流程(一)

本文介绍了SAP EWM系统中内向交货单的基本配置与操作流程。

huqinghai的专栏 2398

poj3020[无向图最小边匹配]

Antenna Placement Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 4461   Accepted: 2194 Description The Global Aerial Research Centre has been allotted the

Sky_Gr_OI 650

ESP32实战:破解校园网WPA2-Enterprise认证的完整指南

本文详细介绍了如何使用ESP32开发板破解校园网WPA2-Enterprise认证的完整指南。通过硬件准备、环境搭建、核心代码实现及常见问题排查,帮助开发者解决企业级WiFi连接难题,特别适用于校园网环境下的物联网设备开发。

weixin_29194817的博客 454

[最小路径覆盖、二分图最大匹配]Pku3020--Antenna Placement

http://acm.pku.edu.cn/JudgeOnline/problem?id=3020  Antenna PlacementTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 2319 Accepted: 1082Description

幻想の天地 880

ROS牛耕法全覆盖规划:从算法原理到清洁机器人实战解析

本文深入解析ROS牛耕法全覆盖规划算法在清洁机器人中的应用,从算法原理到实战优化技巧全面覆盖。详细介绍了地图预处理、区域分解和路径优化等关键步骤,并分享实际案例中的解决方案,帮助开发者提升机器人清扫效率和覆盖率。

weixin_27013291的博客 392

人大金仓V8R3企业版License更新全攻略:从查看到重启一步到位

本文详细解析了人大金仓V8R3企业版License更新的完整运维流程,涵盖从诊断当前授权状态、获取与验证新文件、精准定位旧文件路径,到安全替换文件及服务重启验证的全过程。重点针对更新流程中常见的版本匹配、文件定位、权限与服务重启等关键环节提供了实战解决方案和避坑指南,帮助运维人员高效、平稳地完成授权续期。

redis7keeper的博客 898

poj3020 Antenna Placement

Antenna Placement Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 8605   Accepted: 4263 Description The Global Aerial Research Centre has been allotted the

樱花满地集于我心,楪舞纷飞祈愿相随 1017

手把手教你学simulink(26.8)--控制算法场景示例:基于强化学习的无人机姿态稳定控制系统

首先,我们需要定义无人机的姿态稳定控制环境。环境包括无人机的状态(姿态角、角速度等)和动作(电机转速)。我们还需要定义奖励函数,用于评估控制器的表现。matlab深色版本% 定义环境% 定义状态空间% 12个状态变量% 定义动作空间% 电机转速范围奖励函数用于评估控制器的表现。我们可以根据无人机的姿态误差、角速度误差以及控制输入的变化率来设计奖励函数。具体来说,当无人机的姿态接近设定值时,给予正奖励;当姿态误差较大或控制输入变化剧烈时,给予负奖励。matlab深色版本。

MHD0815的博客 496

POJ 3020 Antenna Placement

题意: 一个矩形中,有N个城市’*’,现在这n个城市都要覆盖无线,若放置一个基站,那么它至多可以覆盖相邻的两个城市。 问至少放置多少个基站才能使得所有的城市都覆盖无线?   思路: 二分图难的不是它的代码多难,而是它该怎么建立。像本题,初看好像与二分图无关,但是我们稍微转化一下,就发现,这就是一个二分图的问题了   首先,我们可以从第一个*,也就是城市开始标记。例如: *** 标记为...

Fighting-Dawn丶的专栏 793

前拉后推计划逻辑适用于哪些行业和企业规模?

《前拉后推计划逻辑的行业适用性分析》摘要:前拉后推计划逻辑(需求端后推锚定交付、供应端前拉匹配资源)最适用于需求波动大且具规模效益的行业,包括家具制造(定制化需求+批量运输)、机械装备(非标设备+部件采购)、消费电子(短周期产品+核心部件备货)及汽车配套(交期绑定+批量生产)等领域。该模式要求企业具备:1)独立计划部门;2)ERP/MES等信息系统;3)资源冗余能力,故更适配中型(1-10亿营收)和大型企业(10亿+)。小型企业需简化应用,仅聚焦关键环节。不适配需求稳定(如快消品)、无规模效益或短周期生产的

追随内心 144

模型可解释性分析:基于SHAP的深度探索

SHAP模型可解释性分析摘要 本文系统性地介绍了SHAP(SHapley Additive exPlanations)方法在机器学习模型可解释性分析中的应用。SHAP基于博弈论的Shapley值理论,为特征重要性评估提供了统一框架。文章详细阐述了四种核心算法:Kernel SHAP(模型无关方法)、Tree SHAP(针对树模型的高效算法)、Deep SHAP(适用于深度学习)和Linear SHAP(线性模型专用)。通过Python实现展示了从数据准备到SHAP分析的全流程,包括摘要图、依赖图等可视化技术

huanghm88的专栏 611

POJ 3020 Antenna Placement(二分图匹配)

POJ 3020 Antenna Placement 题目链接 题意:给定一个地图,'*'的地方要被覆盖上,每次可以用1 x 2的矩形去覆盖,问最少用几个能覆盖 思路:二分图匹配求最大独立集,相邻*之间连边,然后求最大独立集即可 看这数据范围,用轮廓线dp应该也能搞 代码: #include #include #include #include using

Remilia's 954

手把手教你学Simulink实例--基于Simulink的电力电子系统电池管理系统(BMS)设计与仿真实例

本文详细介绍了基于Simulink的电池管理系统(BMS)设计与仿真全过程。首先阐述了BMS在安全防护、寿命延长和性能优化方面的必要性,分析了新能源汽车、光伏储能等典型应用场景的技术指标要求。接着详细讲解了Thevenin等效电路和多电平电池模型构建方法,并给出SOC估算、故障诊断等核心算法的MATLAB实现代码。通过设计正常充放电、过充保护等多场景仿真测试,验证了系统在SOC跟踪精度(误差<1.5%)和故障响应速度(<10ms)方面的优异性能。文章还提出了参数优化方法和未来AI融合、数字孪生等发展方向,提

xiaoheshang_123的博客 379

POJ 3020 Antenna Placement(二分图匹配)

Antenna Placement Time Limit:1000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Submit Status Practice POJ 3020 Description The Global Aerial Research Centre has bee

Inite的博客 557

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

POJ 3020 Antenna Placement (二分图匹配)

题意:‘*’代表城市, 'o’代表空地,要用最少的无线电雷达来覆盖所有的城市,雷达只可以建立在城市上,每一个雷达,只可以覆盖它自己所在的位置和与它相邻的一个位置。 题解:二分图匹配 跟这题差不多,一开始思路一样,编号建无向图,求出最少的不重叠覆盖的雷达个数hungary() / 2,然后加上剩余点数就是答案,因为必然剩余点数周围没有其他“*”。 tot - 2 * hungary() / 2就是剩余点数,加上之后等于tot - hungary() / 2。 #define _CRT_SECURE_NO_WA

gongyuandaye的博客 243

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

POJ3020——Antenna Placement(二分图最大匹配)

Antenna Placement Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 5144 Accepted: 2568 Description The Global Aerial Research Centre has been allotted the task of building the fifth

JIA_char 779

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

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

POJ 3020 Antenna Placement【题解报告|二分图匹配】

题目大意 一个矩形中,有N个城市’*’,现在这n个城市都要覆盖无线,若放置一个基站,那么它至多可以覆盖相邻的两个城市。问至少放置多少个基站才能使得所有的城市都覆盖无线? 思路分析 在这道题上卡了很久,才接触二分图也没什么好的思路。这道题需要用到一个定理: 二分图最小边覆盖 = 两边顶点数 - 最大匹配数 无向图的最小边覆盖 = (二分图两边顶点数 - 二分图的最大匹配数)/2 下面列举几个二分图问题的常用定理: 定理1:最大匹配数 = 最小点覆盖数(这是 Konig 定理) 定理2:二分图最小边覆

csyifanZhang的博客 302

poj 3020 Antenna Placement //二分图匹配,匈牙利算法 (模板)

poj 3020 Antenna Placement //二分图匹配,匈牙利算法 (模板) 题意:给一个地图,其中相邻(上下左右)两个'*'可以匹配,求最多可以匹配几个。 匈牙利算法,复杂度O(n*m) #include<iostream> #include<cstdio> #include<cstring> #include<cmath>...

Rshs 199

POJ3020:Antenna Placement(二分图匹配)

Antnna Placement Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 11093 Accepted: 5459 题目链接:http://poj.org/problem?id=3020 Description: The Global Aerial Re...

dft539533的博客 115

POJ 3020 Antenna Placement(二分图的最大匹配)

POJ 3020 Antenna Placement(二分图的最大匹配) http://poj.org/problem?id=3020 题意:        一个矩形中,有N个城市’*’,其余网格都为'o'表示空地。现在这n个城市都要覆盖无线,若放置一个基站,那么它至多可以覆盖相邻的两个城市。        问至少放置多少个基站才能使得所有的城市都覆盖无线?这个基站的位置可以任意放,不管当

qq_36782366的博客 337

[poj3020]Antenna Placement(二分图最大匹配)

这种上下或左右相邻的问题可以考虑黑白染色法。横纵坐标相加为奇数的染黑,偶数染白,这样每个点和四周的四个点颜色不同,建边后就形成二分图。先假设每个*都要放天线,然后最大匹配显然就是可以省掉的天线数,一减即可得到答案。 #include<cstdio> #include<cstring> #include<algorithm> using namespace std; const int H=50,W=20,N=210; int t,h,w,cnt,num1,num2,v

seeeagull 205

专题10 匹配问题 POJ 3020 Antenna Placement(二分图最大匹配)

POJ 3020 Antenna Placement 题意: 给你一个图,里面的 * 表示 站点,要求把它们都连接起来,问最少所需要的antennas(电线)。 一个antennas可以连接两个基站,要相邻。(特别地,也可以连一个空点) 每个基站至少需要1个antenna。 思路: 建立无向图(先对于每个基站连边)。 跑一遍最大匹配。 之后可能还有一些没匹配到的点。那么这些每匹配的点,就ans++。(管他连到哪里,直接加一条antenna,即ans++) AC #include <iostr

qq_45377553的博客 176

POJ3020_二分图最大匹配(匈牙利算法变型)_Antenna Placement

原题:http://poj.org/problem?id=3020 题目大意: 有四种天线,分别可以朝四个方向覆盖一个城镇(place of interest)(可以看成一个天线可以覆盖两个城镇),给出一张图,星号代表城镇,空格代表空地,问最少需要多少天线可以覆盖所有的城镇。 思路: node标记点并且给城镇编号,edge标识出城镇与城镇的相邻关系,构建一个无向图。其中,点代表城镇,边代表...

weixin_39799208的博客 249

POJ 3020 Antenna Placement (二分图匹配)

题目链接,请点击这里 要使用的定理 关于二分图常用定理 1.最大匹配数 = 最小覆盖数(Konig定理) 2.二分图最小边覆盖 = 顶点数 - 最大匹配数 3.无向图最小边覆盖 = 无向图的最小边覆盖 = (二分图两边顶点数 - 二分图的最大匹配数/2) 至于为什么/2 请看博客https://blog.csdn.net/csyifanZhang/article/details/107081503 思路 先把孤立点城市连城线,变成图,对于图中每一个连通分量,只少用多少边才能将所 有点覆盖,这就是比较典型

qq_48290779的博客 201

POJ 3020 Antenna Placement (二分图匹配)

http://poj.org/problem?id=3020 题意:给你一张0由 * 和 o 组成的图,每次可以选取相邻的两个或一个 * ,问最少几次可以把所有的 * 取完。 因为每次只能取相邻的两个,所以可以建出一个二分图,这样问题就变成了二分图的最小路径覆盖问题,而最小路径覆盖数=节点数-最大匹配数,而这里建的是双向边,所以最大匹配数是匈牙利算法跑出来的结果除以二。 #include...

sdxtcqs的博客 191
上一篇: poj 1523 spf 求割点
下一篇: poj 3177 Redundant Paths tarjan
yrleep
博客等级 码龄14年 15粉丝 275原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值