这个相当于把两两的关系搞成图求的是所有边的子集,使得这个子集没有两两无公共点这个代码不好理解#includeusing namespace std;#define MAX_V 100int V;vector G[MAX_V];int match[MAX_V];bool used[MAX_V];void add_edge(int u,int v){ G[u].pu
原创 2022-08-05 15:56:08
50阅读
题目的意思是在一个有空地,墙,和草的棋盘上放机器人,  机器人只能放在空地上, 机器人很强大可以攻击上、下、左、右四个方向, 但是不能穿透墙。 然后求最多能放置多少个机器人使其不互相攻击. 刚开始拿到题的时候,苦苦思考怎么建图, 连将整个图放大25倍的烂方法想了一遍,最后没能想出正确的解法。 因为对二分图构图以及求解不熟悉。 所以想不出怎样构建图 首先可以知道的是, 在一个点u选择了另一个点v后
转载 2013-04-10 22:10:00
54阅读
2评论
两个集合分别是按行和列凑成的点的集合如图10000000220300041000000012030003两个集合构成的边,求该图的最大二分pp[100][100];in
原创 2022-08-05 15:56:09
20阅读
第一次写HK, 这个算法的原理和dinic比较类似,都是先bfs求出层次图,然后在层次图上进行dfs搜索增广路。这个算法要注意的几点1. 每次构建层次图时,最大层(dis)为最近的Y中的未覆盖的点2. 每次在层次图中找的时候最多找到dis(最大层).听说可以证明到这个算法的复杂度 为 sqrt(n)*m 。 我没有去证但是对比dinic ,这种算法应该都是会提速的,将无规律的搜索变成有规律的Rain on your ParadeTime Limit: 6000/3000 MS (Java/Others) Memory Limit: 655350/165535 K (Java/Others) T
转载 2013-04-25 23:00:00
63阅读
2评论
裸题。。。View Code #include<stdio.h>#include<string.h>bool map[109][109];int mark[109];bool flag[109];int m;bool dfs(int x){ int i; for(i=1;i<=m;i++) { if(map[x][i]==0||flag[i]) continue; flag[i]=1; if(mark[i]==0||dfs(mark[i])) { mark[i]=x; return 1; } } return 0;}int main(){ int i,g,k,j;
转载 2011-07-20 13:52:00
10阅读
2评论
图论里有一个非常经典的算法,那就是二分匹配,只是仅仅是简单的匹配有时并不能解决我们的问题,比方匹配带权的情况。引申的一个非常重要的问题就是分配问题,比方给n个人分派m个任务,每一个人都有不同的成本,怎样分配能使得成本最小就是这种问题,这种问题我们统称为二分图的最大匹配问题. 解决这类问题的最好的方
转载 2017-07-30 09:28:00
57阅读
2评论
匈牙利算法是解决寻找二分最大匹配的。(一)预备知识    什么是二分图:二分图又称作部图,是图论中的一种特殊模型。 设G=(V,E)是一个无向图,如果顶点V可分割为两个互不相交的子集(A,B),并且图中的每条边(i,j)所关联的两个顶点i和j分别属于这两个不同的顶点集(i in A,j in B),则称图G为一个二分图。    什么是匹配:把上图想象成3男4女搞对象(无同性
转载 2023-05-23 16:26:50
54阅读
最大匹配的模板//二分最大匹配模板,二分图都是无向图//调用下面算法前,保证本图是二分...
原创 2023-02-08 09:00:19
66阅读
给了一个矩阵 n行m列 选n个数 要保证这n个数不在同行同列,计算出第k大的数最小 , 二分答案,然后我们对于每个a[i][j]#include #include #include #include using namespace std;const int maxn=100+5;struct BP...
原创 2021-07-28 14:00:08
155阅读
Description
原创 2023-08-23 10:17:13
50阅读
B - The Accomodation of StudentsTime Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64uSubmit Status Practice HDU 2444DescriptionThere are a gr
原创 2021-09-05 12:36:06
87阅读
二分图大讲堂——彻底搞定最大匹配数(最小覆盖数)、最大独立数、最小路径覆盖、带权最优匹配文本内容框架:§1图论点、边集和二分图的相关概念和性质§2二分最大匹配求解匈牙利算法、Hopcroft-Karp算法§3二分图最小覆盖集和最大独立集的构造§4二分图最小路径覆盖求解§5二分图带权最优匹配求解Kuhn-Munkers算法§6小结每章节都详细地讲解了问题介绍,算法原理和分析,算法流程,算法实现四部分内容,力求彻底解决问题。§1图论点、边集和二分图的相关概念和性质点覆盖、最小点覆盖点覆盖集即一个点集,使得所有边至少有一个端点在
转载 2013-07-31 19:54:00
52阅读
2评论
文章链接:点击打开链接
转载 2021-08-13 15:46:22
234阅读
Problem Description
原创 2023-08-23 10:16:49
42阅读
题意:n个炮塔 m个目标 炮弹装填时间t1  炮塔CD时间t2 炮弹速度m个目标坐标n个炮塔坐标问最少需要多少时间打爆所有目标 思路:二分查找需要的时间, 对于一个时间,二分匹配判断是否存在这样时间内的打击可以打爆所有炮塔 此时注意 炮塔可能打好几个目标,所以把炮塔拆成不同时间的炮塔因为炮塔出导弹的时间是固定的,所以可以确定 tt [ i ] [ j ]表示
原创 2021-08-13 13:45:46
124阅读
#include#includeint map[100][100],mark[100],link[100],max2,k;int find(int u) {int i;for(i=1;i='2'&&cdiyi[j])map[i][j]=1;//重要的地方不能写成map[dier[i]][diyi[j...
转载 2013-10-03 17:33:00
63阅读
/* 题意:给你一些冰岛。公共海域和浮冰,冰岛能够隔开两个公共海域,浮冰无影响 求选尽可能多的选一些公共海域点每行每列仅能选一个。 限制条件:冰山能够隔开这个限制条件。即*#*能够选两个 预处理: ***** **#*# ***** 能够按行转化 ***** **#oo ooo*# ***** 按行
转载 2017-05-24 14:56:00
89阅读
2评论
算法总结:二分匹配举个简单的例子,有m个女生n个男生k组关系代表着该女生和该男生可以在一起,目的是达到最大匹配对数,可以用二分匹配来找最大匹配数,大致过程就是从第一个女生开始找,找到一个与她有关系的男生后,开始找下一个女生,如果下一个女生也与该男生有关系,那么就让该女生找其他的男生,如果找到了那么该女生就把该男生让给下一个女生,如果找不到,那么下一个女生就去找下一个男生,一直这样把所有的女生...
原创 2022-03-10 16:12:00
67阅读
/*题意:给你一些冰岛。公共海域和浮冰,冰岛可以隔开两个公共海域,浮冰无影响求选尽可能多的选一些公共海域点每行每列仅能选一个。限制条件:冰山可以隔开这个限制条件。即*#*可以选两个预处理:*******#*#***** 可以按行转化 *******#ooooo*#*****按行转化的基础上按列...
转载 2014-11-02 17:36:00
41阅读
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3468大牛思路:用BFS找出每一个集合点到其它可达点的距离以及这个集合点到下一集合点的距离枚举是否能从一个集合点K经过一个宝物点X到达下一个集合点(K+1).如果能的话,则path[K][X]=true;如果发现有一个集合点不可达的话,则输出-1; 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 #define MAXN 110 8 char map[MAXN][MAXN]...
转载 2013-05-20 19:01:00
73阅读
2评论
  • 1
  • 2
  • 3
  • 4
  • 5