自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(34)
  • 收藏
  • 关注

原创 poj3308 Paratroopers --- 最小点权覆盖->最小割

题目是一个很明显的二分图带权匹配模型,添加源点到nx建边,ny到汇点建边,(nx,ny)=inf建边,求最小割既得最小点权覆盖。在本题中由于求的是乘积,所以先全部取log转换为加法,最后再乘方回来。#include #include #include #include #include #include #include #include #include

2014-07-31 08:05:49 800

原创 poj2112 Optimal Milking --- 最大流,二分

nx个挤奶器,ny头奶牛,每个挤奶器最多能供m头奶牛使用。现给出nx+ny之间的距离矩阵,求使得全部奶牛都到某个挤奶器挤奶所走的路程中,单个奶牛所走的最大路程的最小值。开始感觉这个类似二分图匹配,不同之处在于挤奶器可以连接m个以内的奶牛,用网络流的模型是可以求出满足条件的解的。问题是如何满足最大路程的最小值,这一种典型的二分的问法。。所以我们二分答案,也就是枚举最大路程

2014-07-30 16:46:11 720

原创 poj1149 PIGS --- 最大流EK

有m个猪圈,给出初始时每个猪圈里有几头猪,有n个顾客,每个顾客可能在某k个猪圈里买猪,总共要买a头。顾客依次买猪,每次买完后,猪圈主人可以把猪圈里的猪转移到别的猪圈。每个猪圈的容量是无限大的。问一天最多能卖多少猪。整体读下来可以知道,要卖更多的猪,就要在每个顾客买之前,把尽量多的猪转移到下一个顾客要可以买的k个猪圈里。也就是一个最大流问题。把相邻两个顾客所选的猪圈之间建

2014-07-30 11:25:06 661

原创 poj1459 Power Network --- 最大流 EK/dinic

求从电站->调度站->消费者的最大流,给出一些边上的容量,和电站和消费者可以输入和输出的最大量。添加一个超级源点和汇点,建边跑模板就可以了。两个模板逗可以。#include #include #include #include #include #include #include #include #include #define inf 0x3f3f3f3f

2014-07-30 11:03:03 681

原创 hdu1845 Jimmy’s Assignment --- 完备匹配

题意:要求在一个特殊的图上找最大匹配,该图特点是:无向图,每个节点度数为3,是一个边双连通分量(the graph is 2-edge-connected (that is, at least 2 edges need to be removed in order to make the graph disconnected) 这一点是这样理解的把。。)思路:一般想法就直接建图求最大匹

2014-07-23 09:45:31 1305

原创 hdu1281 棋盘游戏 --- 最大匹配

给一个矩形棋盘,上面有一些空格点,可以放象棋中的“车”,现给出空格的坐标,求最多可以放多少个“车”使他们互不攻击(根据象棋规则,每行每列至多只能放一个),还要求有几个“车”是必须选择的。因为每行每列只能放一个,所以不能有冲突的x或y坐标,既把x和y分为二分图的两个集合,要求最大匹配。至于有多少个必须选择的,我们可以枚举最大匹配中的每个匹配,(一个匹配相当于一个坐标嘛),去掉

2014-07-22 10:21:36 667

原创 hdu1498 50 years, 50 colors --- 最小点覆盖

给一个矩阵,里面有一些不同颜色的气球,每次可以消灭一行或一列中某一种颜色的气球,问你在k次及以内,有哪些颜色的气球是无论如何也消不完的。那么思路就是,对每一种颜色的气球求最小点覆盖,>k 则为答案。相当于 poj3041 的加强版,因为矩阵中不是每一个点都是等价的。#include#include#include#include#include#inclu

2014-07-22 08:36:44 615

原创 hdu1068 Girls and Boys --- 最大独立集

有一个集合男和一个集合女,给出两集合间一些一一对应关系,问该两集合中的最大独立集的点数。最大独立集=顶点总数-最大匹配数此题中,若(a,b)有关,则(b,a)有关,每一个关系算了两次,相当于二分图的两边集合没有分男女,两边都是总人数,所以此题中答案应该是 顶点总数-最大匹配数/2#include#include#include#include#include#

2014-07-22 08:22:47 1179

原创 poj3041 Asteroids --- 最小点覆盖

#include#include#include#include#include#include#includeconst int maxn=510;using namespace std;int my[maxn],mx[maxn],vis[maxn],e[maxn][maxn],n;int path(int i){ int j; for(j=1;j<=n

2014-07-21 21:00:33 864

原创 hdu1151 Air Raid --- 最小路径覆盖

给一个DAG图,一个人可以走一条路,或者就在一个点(路径长度为0),问至少需要多少人可以覆盖所有点。根据二分图的性质:DAG的最小路径覆盖,将每个点拆点后求最大匹配数m,结果为n-m,求具体路径的时候顺着匹配边走就可以,匹配边i→j',j→k',k→l'....构成一条有向路径。#include#include#include#include#include#

2014-07-21 10:48:48 618

原创 poj1325 Machine Schedule

有nx种A类机器,有ny种B类机器,k个东西,每个东西可以在a或b启动时生产(a属于A,b属于B),初始状态AB均在0,每次切换需要重启,要生产全部k种东西,问至少重启几次。将每件东西a,b建边,则每条边至少需要一个点才能完成该边代表的东西,题目等价于最小点覆盖问题,既用最少的点覆盖所有的边,根据二分图性质,最小点覆盖数=最大匹配数#include#inclu

2014-07-21 10:44:56 756

原创 poj2762 Going from u to v or from v to u? --- 缩点+拓扑

给一个有向图,问是否该图上任意两点间可达。首先容易想到缩点成有向无环图,其次就是如何处理任意两点间可达。我在纸上画了一些情况:4 31 22 32 44 41 21 32 43 43 31 22 31 37 81 21 33 42 44 54 65 76 75 61 21 32 33 43 54 5NNYNY根

2014-07-21 10:34:06 588

原创 二分图的性质

二分图中,点覆盖数是匹配数。    (1) 二分图的最大匹配数 = 最小点覆盖数          即求最少的点使得每条边都至少和其中的一个点相关联,很显然直接取最大匹配的一段节点即可。    (2) 二分图的独立数 = 顶点数 - 最大匹配数         很显然的把最大匹配两端的点都从顶点集中去掉这个时候剩余的点是独立集,这是|V|-2*|M|,同时必然可以从每条匹配边的

2014-07-21 10:15:14 951

转载 二分图大讲堂——彻底搞定最大匹配数(最小覆盖数)、最大独立数、最小路径覆盖、带权最优匹配

文本内容框架:§1图论点、边集和二分图的相关概念和性质§2二分图最大匹配求解匈牙利算法、Hopcroft-Karp算法§3二分图最小覆盖集和最大独立集的构造§4二分图最小路径覆盖求解§5二分图带权最优匹配求解Kuhn-Munkers算法§6小结每章节都详细地讲解了问题介绍,算法原理和分析,算法流程,算法实现四部分内容,力求彻底解决问题。 §1图论点、边集

2014-07-21 09:57:07 791

原创 hdu4858 项目管理 bestcoder round1 B

唔。。弱弱的暴力水果0操作时,将v加到u上,可以直接把v加到u相连的点上,这样输出时直接输出要求点的值。布这样的话反正我是超时了。。#include#include#include#include#include#include#includeconst int maxn=100010;using namespace std;vector e[maxn]

2014-07-21 08:26:11 885

原创 hdu4857 逃生 bestcoder round1 A

题目要求要求在满足约束条件的情况下,使小的序号尽力靠前。坑点就在这里,小的序号尽量靠前并不是代表字典序,它要求多种情况时,先使1靠前(可能1只能在第2或第3位 那么就要使它在第2位),其次2,3。。而不是在当前情况下,该位最小是哪个就输出哪个所以直接拓扑排序,或者优先队列都是错的,因为这样都只能保证字典序最小。可以参考代码后面的样例理解正确做法应该是 反向建图后,用最大值优先的优先队列

2014-07-21 08:22:23 1129 1

原创 poj3621 Sightseeing Cows --- 01分数规划

典型的求最优比例环问题参考资料:http://blog.csdn.net/hhaile/article/details/8883652此题中,给出每个点和每条边的权值,求一个环使 ans=∑点权/∑边权 最大。因为题目要求一个环,而且必然是首尾相接的一个我们理解的纯粹的环,不可能是其他样子的环,所以我们可以把一条边和指向的点看做整体处理。上面方程可以化为:ans

2014-07-10 08:56:50 682

原创 poj2728 Desert King --- 01分数规划 二分水果。。

d[i]=cost[i]-ans*dis[0][i]据此二分。但此题用Dinkelbach迭代更好#include#include#include#include#includeusing namespace std;#define N 1010double mp[N][N],c[N][N],x[N],y[N],z[N],e[N][N],d[N];int vi

2014-07-10 08:36:28 732

原创 poj1659 Frogs' Neighborhood

给n个点,以及每个点的度,求一个可以满足的图。额正解那个算法没有细看,感觉差不多的。简单想想,分析一下样例就可以判断出无解的条件,将点按度数从大到小排序,从大的开始处理,依次与后面点相连,如果连到后面点的度数已经是0了,或者到最后一个点了这个点还没有连完则无解。#include#include#include#include#include#inclu

2014-07-09 11:04:05 698

原创 poj3463 Sightseeing --- dij最短路和次短路

最短路好题啊。题目给定起点和终点,要求最短路和次短路(要求次短路只比最短路大1)的道路数量。重点在于次短路如何处理是最高效的呢这就要求对dij算法路径更新的理解了。我们用一个数组记录最短路,一个数组记录次短路。每次对当前最短边,先更新最短路,更新不了最短路再更新次短路。每条边处理两次,这样就可以在2n×n的复杂度内求得最短路和次短路了。#include#inc

2014-07-09 10:58:48 934

原创 poj3134 Command Network --- 最小树形图

新单词unidirectional get T T求有向图上,以某点为根的,最小生成树参考别人的模板#include#include#include#include#include#include#include#define inf 2000000000using namespace std;struct node1{ double x,

2014-07-09 10:50:30 639

原创 poj3013 Big Christmas Tree --- 最短路

我都不好意思在标题上写这是最短路这题挺有意思,关键在于把题目所求的量转换为最短路问题。题意:给一个无向图,每个结点有权值p[i],每条边有权值w[i]求使这颗树所有顶点与根节点1联通的最小花费,最小花费=∑w[i]×∑p[i]第一个∑是所有边,第二个∑是该边下所有结点的权值和思路:通过推导可以发现,对于每个结点,它被算入的花费为 p[i]*d[i],

2014-07-09 09:11:33 670

原创 poj2186 Popular Cows --- 强连通

给一个有向图,问有多少结点是其他所有结点都可以到达的。等价于,在一个有向无环图上,找出度为0 的结点,如果出度为0的结点只有一个,那么这个就是答案,如果大于1个,则答案是0。这题有环,所以先缩点。求唯一出度为0的强连通分量。#include#include#include#include#include#define inf 0x3f3f3f3fusing na

2014-07-09 08:55:45 668

原创 poj1985 Cow Marathon --- 树的直径

树的直径即树中最长的路径的长度。用两次dfs,第一次从任意点出发求得一个最远点p,第二次从p出发求得最远点,这条路径就是最长路,即所求。#include #include #include #include #include #include #include #include #include #define inf 0x3f3f3f3f#define

2014-07-09 08:52:17 782

原创 hdu3666 THE MATRIX PROBLEM --- 差分约束

这要是碰上现场赛我得被搞死 从RE到TLE到WA已疯。。这题建图没有那么直接,通过给出的不等式关系一时想不到怎么建图所以要对题目给的条件一定程度化简,将不等式两边取对数化简得到Sa-Sb要注意w取double类型其次,这题卡时间,根据经验加剪枝:1、出队次数>sqrt(n)则判断有负环2、统计总的入队次数,>2n则判断有负环一般情况下不用这个,因为不严谨

2014-07-06 20:15:26 793

原创 hdu3592 World Exhibition --- 差分约束

这题建图没什么特别x个条件:Sb-Say个条件:Sa-Sb题目问的是,1和n之间的关系。有负环的话,整个就不可能成立,输出-1如果图是连通的(1到n是连通的),就输出d[n]不连通就是题目中说-2的情况。原来我们建图一般添加一个附加结点,或者开始就把所有点入队,就是考虑到不连通的问题,所以添加一个没有意义的条件。#include #include

2014-07-05 20:58:18 566

原创 poj3177 Redundant Paths 边双连通分量

#include #include #include #include #include #include #include #include #include #define inf 0x3f3f3f3f#define eps 1e-6#define ll __int64using namespace std;#define N 1010#define M 20010

2014-07-02 20:28:07 706

原创 zoj2588 Burning Bridges --- 求割边

#include #include #include #include #include #include #include #include #include #define inf 0x3f3f3f3f#define eps 1e-6#define ll __int64using namespace std;#define N 10010#define M 1000

2014-07-02 20:27:20 611

原创 poj1364 King --- 差分约束

这是我见过最扯淡的题面之一。题读了差不多一半我都觉得我这题肯定读不懂了,到最后终于看到重点了靠!就是个差分约束大水题!毫无新意!扯些什么皇后想生孩子!生了男孩是个弱智!父王很担心!这些有的没的有意思吗!!题目就是给一个序列,告诉你 a b gt/lt c 表示从a起的b+1个数之和大于/小于c就根据这个列不等式,要把> 或 = 列出不等式:S[a-1]-S[a+

2014-07-02 08:32:17 581

原创 hdu2767 Proving Equivalences --- 强连通

给一个图,问至少添加多少条有向边可以使图变成强连通的。原图是有环的,缩点建图,在该DAG图上我们可以发现,要使该图变成强连通图必须连成环而添加最少的边连成环,就是把DAG图上入度为0和出度为0的点连上,那么其他的点就都可以互相到达了所以答案就是max(入度为0的点,出度为0的点)#include #include #include #include #include

2014-07-02 08:25:13 645

原创 zoj3795 Grouping --- 强连通,求最长路

给定图,求把至少把图拆成几个集合能够使集合内的点没有直接或间接关系。首先由题意可得图中可能含环,而环里面的点肯定是要拆开的。缩点建图得DAG图,可以想象一下。。把图从入度为零的点向下展开,位于同一层的点放在一个集合是没有关系的,那么题目所求的问题就转化成求图中最长路的问题了。接下来就跟 这题 一模一样了。。#include #include #include

2014-07-01 17:08:05 1057

原创 uva11324 The Largest Clique --- 强连通+dp

首先tarjan缩点,重新建图后,每个点的权值就是该点包含点的个数。然后从入度为0的点开始记忆化搜索,dp[i]表示以i为根最多包含多少点。#include #include #include #include #include #include #include #include #include #define inf 0x3f3f3f3f#define e

2014-07-01 16:56:57 849

原创 poj2239 Selecting Courses --- 二分图最大匹配

匈牙利算法模板题有n门课程,每门课程可能有不同时间,不同时间的课程等价。问不冲突的情况下最多能选多少门课。建立二分图,一边顶点表示不同课程,另一边表示课程的时间(hash一下)。#include #include #include #include #include #include #include #include #include #defi

2014-07-01 16:52:00 636

原创 hdu1754 I Hate It

线段树单点更新模板 求区间最大值#include #include #include #include #include #include #include #include #include #define inf 0x3f3f3f3f#define eps 1e-6#define ll __int64using namespace std;int n,m

2014-07-01 04:58:02 723

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除