
匹配
笑对这个世界的志贵
这个作者很懒,什么都没留下…
展开
-
【最大独立集】HDU - 3829 Cat VS Dog HDU - 3829
Problem Description 有p个小朋友参观动物园,动物园里面有两种动物,分别为猫和狗。规定一个小朋友喜欢猫就讨厌狗,喜欢狗就讨厌猫。 现在管理员要移走一些动物,当然,移走也是有条件的。比如一个小朋友喜欢猫3,讨厌狗4.那么移走狗4,这个小朋友就会非常开心。同样,如果移走猫3,小朋友就会很不高兴。现在问怎么样才能使开心的小朋友的人数最多。思路 要使得开心的小朋友人数最多,翻译 2017-11-12 19:27:30 · 216 阅读 · 0 评论 -
【一般图最大匹配】URAL - 1099 Work Scheduling
Problem Description 给你一个无向的一般图,让你求最大匹配思路: 没有奇环的图,为二分图。一般图就代表可能有奇环 求一般图最大匹配得用带花树算法 然而我没理解,先当模板用,后期就慢慢啃#include <bits/stdc++.h>using namespace std;const int N = 310;struct edge{ int to,翻译 2017-11-12 20:48:01 · 267 阅读 · 0 评论 -
【KM算法 模板】HDU - 2255 奔小康赚大钱
Problem Description n代表房子的数量,n行,每行n个数代表i个村名对第j间房出的价格 要求每个村民有房子住,能获得最大的价格是多少思路: 裸的KM算法,求给定一个带权的二分图,求权值最大的完备匹配。#include<bits/stdc++.h>using namespace std;#define maxn 305#define inf 0x3f3f3f3翻译 2017-11-12 20:42:53 · 219 阅读 · 0 评论 -
【二分图多重匹配 && 最短路 && (快)最大流】POJ - 2112 Optimal Milking
Problem Description 有C头奶牛,K个挤奶站,每个挤奶器最多服务M头奶牛,奶牛和奶牛、奶牛和挤奶站、挤奶站和挤奶站之间都存在一定的距离。现在问满足所有的奶牛都能够被挤奶器服务到的情况下,行走距离的最远的奶牛的至少要走多远。思路: 求满足情况行走距离最远的那牛,所走的最短距离的问题 网络流 + 二分。题目给了奶牛和奶牛,奶牛和挤奶站,挤奶站和挤奶站之间的距离,我们得求翻译 2017-11-12 20:01:44 · 236 阅读 · 0 评论 -
【Hopcroft-Karp && 二分图的最大匹配数 && 有向图】HDU - 2389 Rain on your Parade
Problem Description 给你时间Time。给你n个人,每个人给你所在位置和移动速度。给你m个雨伞的坐标。问你在Time时间内,最多有多少个人能得到雨伞。思路: 暴力n*m求人与雨伞之间的距离,判断人在时间Time内能否到达雨伞处,如果能够到达建一条边。 然后就是最二分图的最大匹配,左边是人,右边是雨伞。 匈牙利算法超时。 得换一个快一点的算法Hopcrof翻译 2017-11-01 17:19:55 · 463 阅读 · 0 评论 -
【最大独立集 && 有墙 && 无向图】HDU - 1045 Fire Net
Problem Description 给你一个正方形棋盘。每个棋子可以直线攻击,除非隔着石头。现在要求所有棋子都不互相攻击,问最多可以放多少个棋子 如上述图,图1是棋盘,图2是放的最多的思路: 可以参考博客先A了ZOJ 1654。这两题是一样的题,上述博客讲的太好了。 核心:如果把最大独立集,点的关系转换到二分图上。 本题也是二分图匹配的一个经典题目。我们将翻译 2017-10-26 09:33:18 · 254 阅读 · 0 评论 -
【最大独立集 && 无墙 && 无向图】HDU - 1281 棋盘游戏
Problem Description 小希和Gardon在玩一个游戏:对一个N*M的棋盘,在格子里放尽量多的一些国际象棋里面的“车”,并且使得他们不能互相攻击,这当然很简单,但是Gardon限制了只有某些格子才可以放,小希还是很轻松的解决了这个问题(见下图)注意不能放车的地方不影响车的互相攻击。 所以现在Gardon想让小希来解决一个更难的问题,在保证尽量多的“车”的前提下,棋盘里有些翻译 2017-10-26 09:15:21 · 266 阅读 · 0 评论 -
【二分图判断 && 二分图最大匹配】HDU - 2444 The Accomodation of Students
Problem Description 首先判断所有的人可不可以分成两部分,每部分内的所有人都相互不认识。如果可以分成 则求两部分最多相互认识的匹配数。思路: 先判断是否为二分图: 开始对任意一未染色的顶点染色,之后判断其相邻的顶点中,若未染色则将其染上和相邻顶点不同的颜色, 若已经染色且颜色和相邻顶点的颜色相同则说明不是二分图。 如果是二分图,求最大匹配。#include<翻译 2017-10-26 08:57:32 · 263 阅读 · 0 评论 -
【最小顶点覆盖数 && 无向图】HDU - 1054 Strategic Game
Problem Description 现在,他有以下的问题。他必须捍卫一个中世纪的城市,形成了树的道路。他把战士的最低数量的节点上,使他们可以观察所有的边。思路: 正常图中:最大独立集数 + 最小顶点覆盖数 = 顶点数 二分图中:最大匹配数 = 最小顶点覆盖数 = 最大独立集 因为题目所给的图是树,树一定是一个二分图。所以直接求最大匹配数即可#include<bits/st翻译 2017-11-03 09:19:17 · 621 阅读 · 0 评论 -
【最小边覆盖 && 无向图】POJ - 3020 Antenna Placement
Problem Description 感兴趣的点用*表示 一个n*m的矩阵, 一个雷达可覆盖相邻的两个位置,一个感兴趣的点可被多个雷达覆盖, 至少需要多少个雷达,才能把所有的感兴趣的点覆盖掉。思路 对于不存在孤立点的图,最大匹配数 + 最小边覆盖数 = 顶点数 紧接着就是建图: 相邻的感兴趣的点可以到达,我们就给它们之间连接一条边。所以我们对于每个感兴趣的点都给它们一个翻译 2017-11-03 09:12:08 · 225 阅读 · 0 评论 -
【二分图多重匹配 && Dinic】POJ - 2289 Jamie's Contact Groups
Problem Description 给你m个组别,每个组别可以只能放特定的人。并最大限度地减少最大组的人数思路: 0-(m-1)代表人,m代表超级源点,n-(n+m)代表组别,n+m+1代表超级汇点。二分 人到超级汇点的流量,最大流求最大匹配,如果最大匹配 = n就减少流量。#include<cstdio>#include<cstring>#include<vector>#in翻译 2017-11-12 19:44:35 · 432 阅读 · 0 评论 -
有向无环图(DAG)的最小路径覆盖
参考博客 最小路径覆盖:在一个有向图中,找出最少的路径,使得这些路径经过了所有的点。 最小路径覆盖分为最小不相交路径覆盖和最小可相交路径覆盖。 最小不相交路径覆盖:每一条路径经过的顶点各不相同。 最小可相交路径覆盖:每一条路径经过的顶点可以相同。 特别的,每个点自己也可以称为是路径覆盖,只不过路径的长度是0。【DAG的最小不相交路径覆盖】HDU 1151 Air Raid翻译 2017-11-03 12:03:48 · 1209 阅读 · 0 评论