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> us…
简单深搜,可以完全暴力,不会超时的. #include<iostream> #include<cstring> #include<cmath> using namespace std; #define MAX(a,b) (a>b?a:b) ][]; int n, maxn; void DFS(int step,int count); int cheak(int x, int y); int main() { int i; while(scanf("%d&…
题意:一个阵地可以向四周扫射,求出来最多能修多少个阵地,墙不可以被扫射透,阵地不能同行或者或者列(有墙隔着例外) 分析:很久以前就做过这道题..当时是练习深搜来着,不过时间复杂度比较高,现在再看突然发现原来可以用二分图匹配来做,时间soso的 ****************************************************************** #include<stdio.h> #include<; ; i<=y; i++)     {       …
把每一列中相邻的 .  缩为一个点 作为二分图的左边 把每一行中相邻的  .  缩为一个点 作为二分图的右边 然后求最大匹配即可 这题用匈牙利足够了...然而..我用了hk...有点大材小用的感觉/// #include <iostream> #include <cstdio> #include <cstring> #include <queue> #include <vector> #include <cmath> #include…
题意: 给出一张图,图中'X'表示wall,'.'表示空地,可以放置blockhouse同一条直线上只能有一个blockhouse,除非有wall 隔开,问在给出的图中最多能放置多少个blockhous 分析: 把原始图分别按行和列缩点  建图:横竖分区.先看每一列,同一列相连的空地同时看成一个点,显然这样的区域不能够同时放两个点.这些 点作为二分图的X部.同理在对所有的行用相同的方法缩点,作为Y部.    连边的条件是两个区域有相交部分(即'.'的地方).最后求最大匹配就是答案. #inclu…
http://acm.hdu.edu.cn/showproblem.php?pid=1045 Fire Net Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Status Practice HDU 1045 Description Suppose that we have a square city with straight streets. A map of a city…
以防万一,题目原文和链接均附在文末.那么先是题目分析: [一句话题意] 给定大小的棋盘中部分格子存在可以阻止互相攻击的墙,问棋盘中可以放置最多多少个可以横纵攻击炮塔. [题目分析] 这题本来在搜索专题里出现的..这回又在二分查找匹配专题出现了..所以当然要按照二分匹配的方法解而不是爆搜(虽然爆搜能过). 问题主要就是如何缩点建图.为了使得blockhouse不能互相攻击,那么使用每行的相邻的点缩点,每列的相邻的点缩点,连边的条件就是两个点存在有相交的部分,最后这两组点求最大匹配就行了. [算法流…
HDOJ(HDU).1045 Fire Net [从零开始DFS(7)] 点我挑战题目 从零开始DFS HDOJ.1342 Lotto [从零开始DFS(0)] - DFS思想与框架/双重DFS HDOJ.1010 Tempter of the Bone [从零开始DFS(1)] -DFS四向搜索/奇偶剪枝 HDOJ(HDU).1015 Safecracker [从零开始DFS(2)] -DFS四向搜索变种 HDOJ(HDU).1016 Prime Ring Problem (DFS) [从零开…
Fire Net Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Status Practice HDU 1045 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, e…
HDU 1045 题意: 在一个n*n地图中,有许多可以挡住子弹的墙,问最多可以放几个炮台,使得炮台不会相互损害.炮台会向四面发射子弹. 思路: 把行列分开做,先处理行,把同一行中相互联通的点缩成一个点.再处理列,同样缩成一个点.然后把行列中,交点不是墙的点连一条边.对这个图跑网络流或者二分图匹配即可. #include <algorithm> #include <iterator> #include <iostream> #include <cstring>…