(匹配)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地图中,有许多可以挡住子弹的墙,问最多可以放几个炮台,使得炮台不会相互损害.炮台会向四面发射子弹. 思路: 把行列分开做,先处理行,把同一行中相互联通的点缩成一个 ...
随机推荐
- sessionStorage和localStorage
html5中的Web Storage包括了两种存储方式:sessionStorage和localStorage. sessionStorage用于本地存储一个会话(session)中的数据,这些数据只 ...
- springmvc后台生成验证码
url http://localhost:8080/admin/getCode http://localhost:8080/admin/checkCode controller package com ...
- 表单input中disabled提交后得不到值的解决办
input 按钮的disabled属性,如果设置了,form表单提交后,后台接收不到input的value input的字段当为diabled时时无法获取数值得,所以最近不要用这个,我们可以用read ...
- 每月IT摘录201805
摘录自互联网的前辈心得: 一.技术:0.精通一个淘汰的技术对你没有任何价值.学习的精力有限,更应该花在值得学的技术上.比如网络.操作系统.数据结构.算法1.工作要有定力,更多的应该是关心问题如何更有效 ...
- Intersecting Lines(叉积,方程)
Intersecting Lines http://poj.org/problem?id=1269 Time Limit: 1000MS Memory Limit: 10000K Total Su ...
- DAO层注入HibernateTemplate的两种方式
-------------------------siwuxie095 DAO 层注入 HibernateTemplat ...
- phpStudy5——php导入其他php文件(php文件的引入)
前言: 通过前边几个例子,相信大家都会有一个疑惑了,就是每个请求数据库的php页面,都要写一次连接数据库的代码,这个肯定是有违代码复用原则的.那么怎么解决这个问题呢? 在php中可以通过include ...
- 鼠标滑过图片添加边框图片无位移[xyytit]
实现下面的效果,鼠标滑过图片添加边框图片无位移——鼠标滑过,图片只是加了边框,不会晃动: 参考代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML ...
- Django的模板语言介绍
模板语言: 1.我们先看下在命令行中渲染模板 先导入模块对象 2.渲染一个变量 <p>当前时间:{{ time }}</p> return render(request,&qu ...
- dddddddddddddddddd
PacificA: Replication in log-based distributed storage systemshttp://research.microsoft.com:8082/pub ...