graphs
文章平均质量分 76
wust_tanyao
这个作者很懒,什么都没留下…
展开
-
hdu4292 Food --- 最大流
n个人,f种食物,d种饮料,各有一定数量,每个人对每种食物和饮料都有自己的喜好,必须要同时满足Y。问至多能满足多少个人。添加源点s,汇点t。s到每种食物建边,边权为该类食物的数量。根据每个人的喜好,将食物到人、人到饮料建边,边权为1。每个人只能算满足一次,所以把人拆点,自己到自己连边,边权为1.最后,每种饮料到t建边,边权为该类饮料的数量。#in原创 2014-11-03 21:22:20 · 806 阅读 · 0 评论 -
poj1459 Power Network --- 最大流 EK/dinic
求从电站->调度站->消费者的最大流,给出一些边上的容量,和电站和消费者可以输入和输出的最大量。添加一个超级源点和汇点,建边跑模板就可以了。两个模板逗可以。#include #include #include #include #include #include #include #include #include #define inf 0x3f3f3f3f原创 2014-07-30 11:03:03 · 681 阅读 · 0 评论 -
hdu2833 WuKong
给定两个起点终点,求两条最短路径上的最多交集点数。求了最短路之后,枚举两条路上每条必然属于最短路径上的路径,(d[u]+w==d[v],则该条路径必然在最短路径上)dp[a][b]表示以a b为终点的最多交集点数。#include #include #include #include #include #include #include #includ原创 2014-08-05 11:52:30 · 801 阅读 · 0 评论 -
URAL 1934 Black Spot --- 简单最短路变形
边权为1,在维护最短路的同时维护p值最小,我直接存的(1-q),即不遇见的概率,要使得这个值最大。#include #include #include #include #include #include #include #include #include #include #define inf 0x3f3f3f3f#define eps 1e-6#de原创 2014-08-04 21:02:14 · 1195 阅读 · 0 评论 -
poj3621 Sightseeing Cows --- 01分数规划
典型的求最优比例环问题参考资料:http://blog.csdn.net/hhaile/article/details/8883652此题中,给出每个点和每条边的权值,求一个环使 ans=∑点权/∑边权 最大。因为题目要求一个环,而且必然是首尾相接的一个我们理解的纯粹的环,不可能是其他样子的环,所以我们可以把一条边和指向的点看做整体处理。上面方程可以化为:ans原创 2014-07-10 08:56:50 · 682 阅读 · 0 评论 -
hdu3861 The King’s Problem --- 强连通+二分图
给一个n个点的有向图,要把n个点分成尽量少的部分,使每个部分里的任意两点间两两可达,而且强连通分量必须在一个部分里。缩点后建新图,二分图最小路径覆盖。#include #include #include #include #include #include #include #include #include #define inf 0x3f3f3f3f#def原创 2014-08-03 17:00:51 · 569 阅读 · 0 评论 -
hdu3440 House Man
有n个房子,严格按从矮到高依次跳,跳的两个房子之间的距离要差分约束。求最长路,按y-x需要注意的是,按高度排序后建边,需要考虑1和n的顺序问题。#include #include #include #include #include #include #include #include #include #define inf 0x3f3f3f3f#原创 2014-08-03 16:57:44 · 816 阅读 · 0 评论 -
hdu3191 How Many Paths Are There
求次短路#include #include #include #include #include #include #include #include #include #define inf 0x3f3f3f3f#define eps 1e-6#define ll long longconst int N=55;const int M=2550;usi原创 2014-08-03 16:44:26 · 588 阅读 · 0 评论 -
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 阅读 · 0 评论 -
poj3463 Sightseeing --- dij最短路和次短路
最短路好题啊。题目给定起点和终点,要求最短路和次短路(要求次短路只比最短路大1)的道路数量。重点在于次短路如何处理是最高效的呢这就要求对dij算法路径更新的理解了。我们用一个数组记录最短路,一个数组记录次短路。每次对当前最短边,先更新最短路,更新不了最短路再更新次短路。每条边处理两次,这样就可以在2n×n的复杂度内求得最短路和次短路了。#include#inc原创 2014-07-09 10:58:48 · 934 阅读 · 0 评论 -
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 阅读 · 0 评论 -
poj1659 Frogs' Neighborhood
给n个点,以及每个点的度,求一个可以满足的图。额正解那个算法没有细看,感觉差不多的。简单想想,分析一下样例就可以判断出无解的条件,将点按度数从大到小排序,从大的开始处理,依次与后面点相连,如果连到后面点的度数已经是0了,或者到最后一个点了这个点还没有连完则无解。#include#include#include#include#include#inclu原创 2014-07-09 11:04:05 · 698 阅读 · 0 评论 -
poj3013 Big Christmas Tree --- 最短路
我都不好意思在标题上写这是最短路这题挺有意思,关键在于把题目所求的量转换为最短路问题。题意:给一个无向图,每个结点有权值p[i],每条边有权值w[i]求使这颗树所有顶点与根节点1联通的最小花费,最小花费=∑w[i]×∑p[i]第一个∑是所有边,第二个∑是该边下所有结点的权值和思路:通过推导可以发现,对于每个结点,它被算入的花费为 p[i]*d[i],原创 2014-07-09 09:11:33 · 670 阅读 · 0 评论 -
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 阅读 · 0 评论 -
hdu3666 THE MATRIX PROBLEM --- 差分约束
这要是碰上现场赛我得被搞死 从RE到TLE到WA已疯。。这题建图没有那么直接,通过给出的不等式关系一时想不到怎么建图所以要对题目给的条件一定程度化简,将不等式两边取对数化简得到Sa-Sb要注意w取double类型其次,这题卡时间,根据经验加剪枝:1、出队次数>sqrt(n)则判断有负环2、统计总的入队次数,>2n则判断有负环一般情况下不用这个,因为不严谨原创 2014-07-06 20:15:26 · 793 阅读 · 0 评论 -
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 阅读 · 0 评论 -
poj1149 PIGS --- 最大流EK
有m个猪圈,给出初始时每个猪圈里有几头猪,有n个顾客,每个顾客可能在某k个猪圈里买猪,总共要买a头。顾客依次买猪,每次买完后,猪圈主人可以把猪圈里的猪转移到别的猪圈。每个猪圈的容量是无限大的。问一天最多能卖多少猪。整体读下来可以知道,要卖更多的猪,就要在每个顾客买之前,把尽量多的猪转移到下一个顾客要可以买的k个猪圈里。也就是一个最大流问题。把相邻两个顾客所选的猪圈之间建原创 2014-07-30 11:25:06 · 661 阅读 · 0 评论 -
poj3308 Paratroopers --- 最小点权覆盖->最小割
题目是一个很明显的二分图带权匹配模型,添加源点到nx建边,ny到汇点建边,(nx,ny)=inf建边,求最小割既得最小点权覆盖。在本题中由于求的是乘积,所以先全部取log转换为加法,最后再乘方回来。#include #include #include #include #include #include #include #include #include原创 2014-07-31 08:05:49 · 800 阅读 · 0 评论 -
hdu4912 Paths on the tree --- LCA贪心
给一棵n个结点的树,m条路径的起点和终点,问至多可以选择多少条路径使其两两间没有公共点。这题的主要问题是,1、如何判断两条路径上没有交点2、按什么策略来选看上去感觉是最大匹配问题,但nm的范围较大问题1无法高效的解决。画个图发现可能和LCA有关,但比赛时不知道这到底有什么用,完全没想贪心。要选择尽量多,就是要尽量避免冲突。我们选择一个点作为根,把给的边画出来原创 2014-08-06 21:00:07 · 846 阅读 · 0 评论 -
hdu4289 Control --- 最小割,拆点
给一个无向图,告知敌人的起点和终点,你要在图上某些点安排士兵,使得敌人无论从哪条路走都必须经过士兵。每个点安排士兵的花费不同,求最小花费。分析:题意可抽象为,求一些点,使得去掉这些点之后,图分成了两部分,敌人的起点和终点分别在这两部分里。即求最小割。问题是最小割是边,这里把点拆成两个,自己到自己连边,边权为该点点权。其他题目给的边照连就可以了。为了方便,对于点i,拆成(原创 2014-11-03 21:29:22 · 854 阅读 · 0 评论 -
hdu4253 Two Famous Companies --- 二分+MST
给n个点,m条边的图,每条边要么属于a公司,要么属于b公司。要求一颗最小生成树,条件是其中属于a公司的边数为k。这题做法很巧妙。要求最小生成树,但有一定限制,搜索、贪心显然都不对。要是能找到一种合理的控制方法,使得求MST的过程中可以控制a公司边的数量,那样问题就解决了。所以我们可以人为给a公司的边加上一定的权值,使得其中一些边不得不退出MST的选择范围内。如果此时求的原创 2014-10-23 21:13:55 · 1227 阅读 · 0 评论 -
poj3189 Steady Cow Assignment --- 多重匹配,二分图匹配解法
有n头牛,m个牛棚,每头牛对牛棚的满意程度有一个排序,每个牛棚有牛数限制。问如何分配各个牛,使得所有牛的满意程度的差值最小。这题首先可以想到二分答案,对于每一种差值来求是否可行。不想再搞网络流,学习了下二分图匈牙利解法。。匹配时,对于每一种选择(牛棚),若满足范围,且有多余的容量,则匹配;否则,对于该牛棚已经匹配过的牛进行增广。#include原创 2014-09-25 12:47:57 · 894 阅读 · 0 评论 -
hdu3849 By Recognizing These Guys, We Find Social Networks Useful
无向图求桥边数量,按照题目输入顺序输出桥边。注意存的brig和边的对应关系。#include #include #include #include #include #include #include #include #include #include #define inf 0x3f3f3f3f#pragma comment(linker, "/STACK原创 2014-08-18 16:00:06 · 1109 阅读 · 0 评论 -
hdu4185 Oil Skimming
要用1×2的板子尽量多的覆盖##区域,且不能交叉,求至多可以覆盖多少板子。每一个#向向下或向右相邻的#建边。求最大匹配就可以了。其实这题数据是比较弱的把,应该是#的个数在600以内把。。#include #include #include #include #include #include #include #include #include #原创 2014-08-18 13:58:17 · 717 阅读 · 0 评论 -
hdu4948 Kingdom
题意:有n个城市,任意两点之间有且仅有一条有向边。要求输出一种建造城市的顺序,使得之前已经建造的城市可以到达当前建造的城市,且至多经过两条边。首先我们可以证明,这种方案是肯定存在的,因为在一个满足题意的图中,入度最大的点一定是其他点在两步之内可达的。那么这个点就最后输出。上面的结论是为什么呢。。题解告诉我们用反证法证明,若u结点是当前图中入度最大的结点,假设v点存在该路原创 2014-08-15 16:07:41 · 838 阅读 · 0 评论 -
CodeForces 29D Ant on the Tree
给一颗树,1为根,要求遍历树上所有点,给出叶子结点的访问顺序,限制每条边至多访问两次。首先这是一棵树,那么两点之间的路线是确定的,所以我第一遍dfs预处理出从根节点到每个叶子的路径保存,以便后面输出。那么就按照题目要求输出叶子结点的顺序依次输出,然后从一个叶子到下一个叶子的时候,从他们的最近公共祖先转折,所以我还预处理了相邻两个叶子结点的LCA。#include原创 2014-08-15 14:23:40 · 927 阅读 · 0 评论 -
poj2112 Optimal Milking --- 最大流,二分
nx个挤奶器,ny头奶牛,每个挤奶器最多能供m头奶牛使用。现给出nx+ny之间的距离矩阵,求使得全部奶牛都到某个挤奶器挤奶所走的路程中,单个奶牛所走的最大路程的最小值。开始感觉这个类似二分图匹配,不同之处在于挤奶器可以连接m个以内的奶牛,用网络流的模型是可以求出满足条件的解的。问题是如何满足最大路程的最小值,这一种典型的二分的问法。。所以我们二分答案,也就是枚举最大路程原创 2014-07-30 16:46:11 · 720 阅读 · 0 评论 -
CodeForces 34D Road Map
给出每个点的父节点,存下来。再从r2开始,dfs到r1,把这条路径上的所有结点的父节点改变方向就可以了。#include #include #include #include #include #include #include #include #include #include #define inf 0x3f3f3f3f#pragma comment(l原创 2014-08-25 21:24:10 · 1250 阅读 · 0 评论 -
hdu2819 Swap
#include #include #include #include #include #include #include #include #include #include #define inf 0x3f3f3f3f#pragma comment(linker, "/STACK:16777216")#define eps 1e-6#define ll long l原创 2014-08-11 17:00:28 · 602 阅读 · 0 评论 -
hdu2586 LCA
给一颗无向树有n个结点,有m个询问,问树上任意两点间距离,n的范围是40000,m是200这题告诉我们一个求树上两点间距离的好方法,就是先求根到其余所有点的距离,再求出询问的LCA,答案为dis[a]+dis[b]-2*dis[lca(a,b)]#include #include #include #include #include #include #include原创 2014-08-11 16:59:52 · 673 阅读 · 0 评论 -
hdu3472 HS BDC --- 混合图欧拉回路
讲的很好的资料:点击打开链接点击打开链接#include #include #include #include #include #include #include #include #include #include #define inf 0x3f3f3f3f#pragma comment(linker, "/STACK:16777216")#d原创 2014-08-21 09:31:18 · 876 阅读 · 0 评论 -
hdu4966 GGS-DDU --- 最小树形图
在比赛接近末尾的阶段听了题意,感觉信息量有点大,可能是贪心、dp之类的就懒得想了。。哎。。要是往图论上想一点点说不定就。。题意:有n门课程,每门课程有0~a[i]个等级,开始都在0级。有m个培训班,每个培训班的条件是第c门课等级>=l1,这样可以使第d门课的等级升到l2,并花费一定money。问要使得所有课程都达到最高等级至少需要多少money。根据条件建一原创 2014-08-20 14:12:32 · 985 阅读 · 0 评论 -
zoj2314 Reactor Cooling --- 上下界可行流
题目给出了每条边的上下界,此类题目的建边方法是:1、添加源点汇点,2、对每条边 添加边 c(u,v) = up(u,v) - low(u,v)3、对每个点 c(s,v) = out(v) c(v,t) = in(v) (权值为正)求s到t的最大流,若最大流等于所有边下界的和,则存在可行流,每条边的流量为 flow原创 2014-08-03 11:34:07 · 1004 阅读 · 0 评论 -
poj3469 Dual Core CPU --- 最小割
一个CPU有两个核,要把n个模块放在其中一个核上,给出放在不同核上的花费。另给出m对模块,若不放在同一模块则会产生额外花费。求最小花费。对于每一个模块可以选择核1,核2,和相连的模块。据此建边,核1为源点,核2为汇点,相连的模块之间建双向边,边权均为花费。求最小割即可。#include #include #include #include #includ原创 2014-08-01 08:18:45 · 721 阅读 · 0 评论 -
poj1364 King --- 差分约束
这是我见过最扯淡的题面之一。题读了差不多一半我都觉得我这题肯定读不懂了,到最后终于看到重点了靠!就是个差分约束大水题!毫无新意!扯些什么皇后想生孩子!生了男孩是个弱智!父王很担心!这些有的没的有意思吗!!题目就是给一个序列,告诉你 a b gt/lt c 表示从a起的b+1个数之和大于/小于c就根据这个列不等式,要把> 或 = 列出不等式:S[a-1]-S[a+原创 2014-07-02 08:32:17 · 581 阅读 · 0 评论 -
hdu1068 Girls and Boys --- 最大独立集
有一个集合男和一个集合女,给出两集合间一些一一对应关系,问该两集合中的最大独立集的点数。最大独立集=顶点总数-最大匹配数此题中,若(a,b)有关,则(b,a)有关,每一个关系算了两次,相当于二分图的两边集合没有分男女,两边都是总人数,所以此题中答案应该是 顶点总数-最大匹配数/2#include#include#include#include#include#原创 2014-07-22 08:22:47 · 1180 阅读 · 0 评论 -
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 阅读 · 0 评论 -
poj3249 Test for Job --- 拓扑排序
从起点开始,按照拓扑排序的顺序依次更新dp[i],表示到该点能获得的最大值#include #include #include #include #include #include #include #include #include #define inf 0x3f3f3f3f#define ll __int64#define mod 1000000007us原创 2014-06-26 21:36:35 · 737 阅读 · 0 评论 -
poj2263 Heavy Cargo --- floyd求最大容量路
求给定起点到终点的路径中,最小边权的最大值#include #include #include #include #include #include #include #include #include #define inf 0x3f3f3f3f#define ll __int64#define mod 1000000007using namespace st原创 2014-06-26 21:33:56 · 741 阅读 · 0 评论 -
hdu1384 poj1202 Intervals --- 差分约束
差分约束系统差分约束系统的应用难点在于将实际问题转换为差分约束系统。简单来说,要构造出一系列满足题意的不等式 形如 Si-Sj对于每一个这样的不等式,构造有向边 w(j->i)=Ck。为保证图的连通,我们引入附加结点Vs。初始化w(s->i)=0,d[Vs]=0接下来就是求解源点到其他点的单源最短路径。由于差分约束系统中通常含负值,所以我们一般用spfa或者原创 2014-04-25 23:07:19 · 882 阅读 · 0 评论