/**
题目:poj3020 Antenna Placement
链接:http://poj.org/problem?id=3020
题意:
给一个由'*'或者'o'组成的n*m大小的图,你可以用一个小圈圈圈住两个相邻的'*',问要圈住所有的'*'最少需要多少个小圈圈。(小圈圈可以相交) 思路:
先尽量圈出能圈两个且不重复圈的'*'。剩下的没有圈的'*'一定需要用一个。
所以构造二分图,求最大匹配,结果:ans = 总的'*'数量-最大匹配数*2 + 最大匹配数 = 总的'*'数量-最大匹配数; 用自身对应自身构造的二分图,求得的最大匹配数要对半才是上面要求的最大匹配数。 */ #include<iostream>
#include<cstdio>
#include<algorithm>
#include<map>
#include<vector>
#include<queue>
#include<set>
#include<cstring>
using namespace std;
const int MAXN = ;///n*m=400
int f[MAXN][MAXN];
int vit[MAXN], S[MAXN], T[MAXN];
int N;
///模板
bool Find(int x)///走交替路,寻找增广路
{
for(int i = ; i <= N; i++){///n表示右侧点数。
if(f[x][i]&&vit[i]==){
vit[i] = ;
if(T[i]==||Find(T[i])){
T[i] = x;///右边第i个点和左边第x个点匹配成功。
S[x] = i;///左边第x个点和右边第i个点匹配成功。
return true;
}
}
}
return false;
}
char str[][];
int main()
{
int n, m, k;
cin>>k;
while(k--){
scanf("%d%d",&n,&m);
N = n*m;
for(int i = ; i <= n; i++){
scanf("%s",str[i]+);
}
memset(f, , sizeof f);
memset(S, , sizeof S);
memset(T, , sizeof T);
int cnt = ;///'*'的个数
for(int i = ; i <= n; i++){
for(int j = ; j <= m; j++){
if(str[i][j]=='*'){
cnt++;
if(j+<=m&&str[i][j+]=='*'){///向右边,和下边找,以免重复。
f[(i-)*m+j+][(i-)*m+j] = f[(i-)*m+j][(i-)*m+j+] = ;///两边都是相同的数据,所以最大匹配数结果是两倍。
///最终要除以2。
}
if(i+<=n&&str[i+][j]=='*'){
f[i*m+j][(i-)*m+j] = f[(i-)*m+j][i*m+j] = ;
}
}
}
}
int ans = ;
for(int i = ; i <= N; i++){
memset(vit, , sizeof vit);
if(Find(i)) ans++;
}
printf("%d\n",cnt-*(ans/)+(ans/));/// cnt - ans/2;
}
return ;
}

poj3020 Antenna Placement 匈牙利算法求最小覆盖=最大匹配数(自身对应自身情况下要对半) 小圈圈圈点的更多相关文章

  1. 51nod 2006 飞行员配对(二分图最大匹配) 裸匈牙利算法 求二分图最大匹配题

    题目: 题目已经说了是最大二分匹配题, 查了一下最大二分匹配题有两种解法, 匈牙利算法和网络流. 看了一下觉得匈牙利算法更好理解, 然后我照着小红书模板打了一遍就过了. 匈牙利算法:先试着把没用过的左 ...

  2. POJ 3020 Antenna Placement 匈牙利算法,最大流解法 难度:1

    http://poj.org/problem?id=3020 #include <cstdio> #include <cstring> #include <vector& ...

  3. POJ3020 Antenna Placement —— 最大匹配 or 最小边覆盖

    题目链接:https://vjudge.net/problem/POJ-3020 Antenna Placement Time Limit: 1000MS   Memory Limit: 65536K ...

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

    Antenna Placement DescriptionThe Global Aerial Research Centre has been allotted the task of buildin ...

  5. 匈牙利算法求最大匹配(HDU-4185 Oil Skimming)

    如下图:要求最多可以凑成多少对对象 大佬博客: https://blog.csdn.net/cillyb/article/details/55511666 https://blog.csdn.net/ ...

  6. 【01染色法判断二分匹配+匈牙利算法求最大匹配】HDU The Accomodation of Students

    http://acm.hdu.edu.cn/showproblem.php?pid=2444 [DFS染色] #include<iostream> #include<cstdio&g ...

  7. Hungary(匈牙利算法)——二分图最大匹配

    在复习匈牙利算法的时候,发现这么一篇介绍匈牙利算法的文章,非常通俗易懂,所以就借鉴过来了. 复杂度:邻接矩阵:O(v^3)邻接表:O(V*E) 附上链接:趣写算法系列之--匈牙利算法 下面就附上代码吧 ...

  8. POJ3020 Antenna Placement

    Antenna Placement Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 9586   Accepted: 4736 ...

  9. PKU 3020 Antenna Placement(拆点+最小边覆盖)(最大匹配)

    题目大意:原题链接 一个矩形中,有N个城市’*’,现在这n个城市都要覆盖无线,若放置一个基站,那么它至多可以覆盖相邻的两个城市.问至少放置多少个基站才能使得所有的城市都覆盖无线? 提示:看清楚题目,' ...

随机推荐

  1. ExpandListView onChildClickListener 失效

    http://stackoverflow.com/questions/11529472/expandablelistview-onchildclicklistener-not-work 首先声明:   ...

  2. phpcms的后台网站直接访问正常,百度快照收录链接访问跳转到非法网站

    问题:    phpcms制作的网站直接访问正常,百度快照收录链接访问跳转到非法网站 百度快照收录网站域名,访问时自动跳转到一个非法网站 检查静态页index.html,index.php 网页内引用 ...

  3. 如何访问python类中的私有方法

    在python中,不像c#/java类语言,支持类的私有方法,这点有点像objc,虽然objc可以通过扩展extension来实现,但源于objc的运行时特性,我们还是可以通过非常手段来进行访问的.不 ...

  4. aspcms 幻灯片用列表调用

    首先找到网站目录/inc/AspCms_MainClass.asp 增加主函数 Public Function parseSlideList(str) if not isExistStr(conten ...

  5. Node.js abaike图片批量下载Node.js爬虫1.01版

    //====================================================== // abaike图片批量下载Node.js爬虫1.01 // 1.01 修正了输出目 ...

  6. Kolla 4.0.0环境下VIP无法迁移问题排查

    VRRP无法切换VIP的问题分析: Keepalived的配置文件:/etc/kolla/keepalived/keepalived.conf当中,nopreempt选项是影响切换的因素之一,另一个因 ...

  7. Linux命令之编辑

    vi是终端命令行里功能最强的文本编辑器了,但眼下须要用到的仅仅是文本编辑功能.与GCC.make等工具的整合应用如今还不须要,所以操作难度不大,习惯就好. Linux发行版所带的一般不是vi,而是vi ...

  8. ES2017 keys,values,entries使用

    let {keys, values, entries} = Object; let obj = { a: 1, b: 2, c: 3 }; for (let key of keys(obj)) { c ...

  9. leetcode第一刷_Combination Sum Combination Sum II

    啊啊啊啊.好怀念这样的用递归保存路径然后打印出来的题目啊.好久没遇到了. 分了两种,一种是能够反复使用数组中数字的,一种是每一个数字仅仅能用一次的.事实上没有多大差别,第一种每次进入递归的时候都要从头 ...

  10. @Resource或者@Autowired作用/Spring中@Autowired注解、@Resource注解的区别

    @Resource或者@Autowired作用不用写set get就能注入,当然,前提是你已经开启了注解功能. spring不但支持自己定义的@Autowired注解,还支持几个由JSR-250规范定 ...