(匹配)Fire Net --hdu --1045
链接:
http://acm.hdu.edu.cn/showproblem.php?pid=1045
http://acm.hust.edu.cn/vjudge/contest/view.action?cid=82834#problem/A
一看原题,先用搜索写一下,还是要学学匹配吧!
以前的代码:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
#define N 10
#define INF 0x3f3f3f3f int n, ans;
char G[N][N]; bool judge(int x, int y)
{
int i; if(G[x][y]=='X')
return false; for(i=x; i>=; i--)
{
if(G[i][y]=='X')
break;
if(G[i][y]=='D')
return false;
} for(i=y; i>=; i--)
{
if(G[x][i]=='X')
break;
if(G[x][i]=='D')
return false;
}
return true;
} void DFS(int z, int k)
{
int x, y; x = z/n;
y = z%n; if(z==n*n)
{
ans = max(ans, k);
return ;
} if(judge(x, y))
{
G[x][y] = 'D';
DFS(z, k+);
G[x][y] = '.';
} DFS(z+, k);
} int main()
{
while(scanf("%d", &n),n)
{
int i; memset(G, , sizeof(G));
for(i=; i<n; i++)
scanf("%s", G[i]); ans = ;
DFS(, ); printf("%d\n", ans);
}
return ;
}
不懂什么意思,先贴上
匹配的代码:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
#define N 105
#define INF 0x3f3f3f3f struct node{int x, y;}a[N][N]; int n, p[N], used[N], x, y, G[N][N];
char s[N][N]; int Find(int u)
{
for(int i=; i<=y; i++)
{
if(!used[i] && G[u][i])
{
used[i]=;
if(!p[i] || Find(p[i]))
{
p[i] = u;
return true;
}
}
}
return false;
} int main()
{
while(scanf("%d", &n),n)
{
int i, j; memset(s, , sizeof(s));
for(i=; i<n; i++)
scanf("%s", s[i]); x = y = ;
for(i=; i<n; i++)
for(j=; j<n; j++)
{
if(s[i][j]=='.')
{
if(j== || s[i][j-]=='X')
x++;
a[i][j].x = x;
}
if(s[j][i]=='.')
{
if(j== || s[j-][i]=='X')
y++;
a[j][i].y = y;
}
} memset(G, , sizeof(G));
for(i=; i<n; i++)
for(j=; j<n; j++)
{
if(s[i][j]=='.')
{
int u = a[i][j].x;
int v = a[i][j].y;
G[u][v] = ;
}
} int ans= ;
memset(p, , sizeof(p));
for(i=; i<=x; i++)
{
memset(used, , sizeof(used));
if(Find(i)==true)
ans++;
} printf("%d\n", ans);
}
return ;
}
(匹配)Fire Net --hdu --1045的更多相关文章
- A - Fire Net - hdu 1045(二分图匹配)
题意:一个阵地可以向四周扫射,求出来最多能修多少个阵地,墙不可以被扫射透,阵地不能同行或者或者列(有墙隔着例外) 分析:很久以前就做过这道题..当时是练习深搜来着,不过时间复杂度比较高,现在再看突然发 ...
- Fire Net HDU - 1045(二分匹配)
把每一列中相邻的 . 缩为一个点 作为二分图的左边 把每一行中相邻的 . 缩为一个点 作为二分图的右边 然后求最大匹配即可 这题用匈牙利足够了...然而..我用了hk...有点大材小用的感觉// ...
- Fire Net HDU - 1045 (二分图匹配)
题意: 给出一张图,图中'X'表示wall,'.'表示空地,可以放置blockhouse同一条直线上只能有一个blockhouse,除非有wall 隔开,问在给出的图中最多能放置多少个blockhou ...
- Fire Net HDU 1045
简单深搜,可以完全暴力,不会超时的. #include<iostream> #include<cstring> #include<cmath> using name ...
- hdu 1045 Fire Net(最小覆盖点+构图(缩点))
http://acm.hdu.edu.cn/showproblem.php?pid=1045 Fire Net Time Limit:1000MS Memory Limit:32768KB ...
- HDU 1045(Fire Net)题解
以防万一,题目原文和链接均附在文末.那么先是题目分析: [一句话题意] 给定大小的棋盘中部分格子存在可以阻止互相攻击的墙,问棋盘中可以放置最多多少个可以横纵攻击炮塔. [题目分析] 这题本来在搜索专题 ...
- HDOJ(HDU).1045 Fire Net (DFS)
HDOJ(HDU).1045 Fire Net [从零开始DFS(7)] 点我挑战题目 从零开始DFS HDOJ.1342 Lotto [从零开始DFS(0)] - DFS思想与框架/双重DFS HD ...
- HDU 1045——Fire Net——————【最大匹配、构图、邻接矩阵做法】
Fire Net Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit Sta ...
- HDU 1045 Fire Net 二分图建图
HDU 1045 题意: 在一个n*n地图中,有许多可以挡住子弹的墙,问最多可以放几个炮台,使得炮台不会相互损害.炮台会向四面发射子弹. 思路: 把行列分开做,先处理行,把同一行中相互联通的点缩成一个 ...
随机推荐
- Numpy 常用函数
保存文件i3 = eye(3) 创建一个3*3 的单位矩阵savetxt('eye.txt',i3) #保存矩阵 读取文件c,v=np.loadtxt('data.csv', delimiter=', ...
- 实现Action的三种方式
实现Action的三种方式: 1.普通类 一般采用此种方法 2.实现Action接口 3.继承ActionSupport类
- 唯快不破:Web应用的13个优化步骤
https://mp.weixin.qq.com/s?__biz=MjM5NzA1MTcyMA==&mid=2651163004&idx=2&sn=2b1be8014abf19 ...
- python3 回顾笔记1
http://www.runoob.com/python3/python3-tutorial.html这个网址,可以学习python3的基础语法. 1. 单引号和双引号意义完全相同.用r可以限制转义符 ...
- Codeforces Beta Round #9 (Div. 2 Only)
Codeforces Beta Round #9 (Div. 2 Only) http://codeforces.com/contest/9 A gcd水题 #include<bits/stdc ...
- VMware虚拟机安装Centos预安装环境图文教程1
前言: 习惯了微软的各种可视化开发软件环境,突然接触Linux命令式的操作环境,总是会让人有些反感跟抵触的. 经过了几天的研究,发现Linux也并不是那么的深不可测.在配置网站部署环境的时候,系统集成 ...
- django做form表单的数据验证
我们之前写的代码都没有对前端input框输入的数据做验证,我们今天来看下,如果做form表单的数据的验证 在views文件做验证 首先用文字描述一下流程 1.在views文件中导入forms模块 2. ...
- count(distinct) 与group by 浅析
x在传统关系型数据库中,group by与count(distinct)都是很常见的操作.count(distinct colA)就是将colA中所有出现过的不同值取出来,相信只要接触过数据库的同学都 ...
- [freeCodeCamp] solution to HTTP JSON API SERVER passed!
var http = require('http') var url = require('url') function parsetime (time) { return { hour: time. ...
- Java 8 Optional 类深度解析
Java 8 Optional 类深度解析 身为一名Java程序员,大家可能都有这样的经历:调用一个方法得到了返回值却不能直接将返回值作为参数去调用别的方法.我们首先要判断这个返回值是否为null,只 ...