随笔分类 - 图论
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3721题意:给你一颗n个节点n-1条边的树,每条边都有一个权值,现在让你任意移动一条边然后把这条边连接到任意两个点上,最后问你怎样移动才能使树上相距最远的两个点距离最小。思路:先求出树的最长路,然后枚举移动最长路上的所有边,移走这条边后,原树必定分为不连接的两颗子树,分别求这两颗子树的最长路,然后分别找到两颗子树最长路上靠近中点的点,把这两个点连上刚刚从母树移走的边,再求一遍母树最长路,比较所有结果取最优解即可。注意每次枚举移动后都要把图复原然后继续枚举。 1 #pragma comment(li.
阅读全文
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2853题意:有n个公司,m个任务,每个公司做每个任务都有一个效率值,最开始每个公司都指派了一个任务,现在要你重新给每个公司分配一个任务(一个任务只能分配给一家公司),使得所有公司任务的效率值最大,并且改变的原始任务最少。思路:把每条边的权值扩大k倍(k>n),然后属于原始任务的边权值+1,权值加1是为了当两条边权值相同时,更优先选择属于原始任务的边,扩大k倍的巧妙之处不仅在于KM匹配时优先选择原始边所得答案除k得到原始答案,而且结果对k求余就是保留的就是原始任务的数量。这种题对思维要求太高了,
阅读全文
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1914题目大意:问题大概是这样:有一个社团里有n个女生和n个男生,每位女生按照她的偏爱程度将男生排序,同时每位男生也按照自己的偏爱程度将女生排序。然后将这n个女生和n个男生配成完备婚姻。如果存在两位女生A和B,两位男生a和b,使得A和a结婚,B和b结婚,但是A更偏爱b而不是a,b更偏爱A而不是B,则这个婚姻就是不稳定的,A和b可能背着别人相伴而走,因为他俩都认为,与当前配偶比起来他们更偏爱各自的新伴侣。如果完备婚姻不是不稳定的,则称其是稳定的。通过证明,可以得到每一个n女n男的社团,都存在稳定婚姻的
阅读全文
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4612题目大意:给你一个无向图,问你加一条边后最少还剩下多少多少割边。解题思路:好水的一道模板题。先缩点变成一颗树,再求树的最长直径,直径两端连一条边就是最优解了。 但是....我WA了一个下午.....没有处理重边。 重边的正确处理方法:只标记已经走过的正反边,而不限制已走过的点。换句话说就是可以经过重边再次走向父亲节点,而不能经过走过边的反向边返回父亲节点。 1 #pragma comment(linker, "/STACK:1024000000,1024000000")..
阅读全文
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3861题目大意:一个有向图,让你按规则划分区域,要求划分的区域数最少。规则如下:1、有边u到v以及有边v到u,则u,v必须划分到同一个区域内。2、一个区域内的两点至少要有一方能到达另一方。3、一个点只能划分到一个区域内。解题思路:根据规则1可知必然要对强连通分量进行缩点,缩点后变成了一个弱连通图。根据规则2、3可知即是要求图的最小路径覆盖。定义:最小路径覆盖:在图中找一些路径(路径数最少),使之覆盖了图中所有的顶点,且每个顶点有且仅和一条路径有关联。最小顶点覆盖:在图中找一些点(顶点数最少),使之覆
阅读全文
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4571题目大意:小A去小B家,图中有多个点,每个点有一个两个值c,w,表示拜访该点消费的时间为c,同时获得的幸福指数为w,问你在时间T范围内,要求走走最短的路程,并且如果先拜访u再拜访v,那么v点的幸福指数大于u才可以去拜访,求小A能够获得的最大的幸福指数是多少。解题思路:这题巨坑,开始用优先队列+bfs,无奈的TLE,后来又改成spfa,WA到死。 本题要求路程最短,可以先用floyd预处理出最短路,然后再在这个最短路的基础上进行spfa,spfa过程中每个点都有T个状态,dis[x][t...
阅读全文
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4360题目大意:屌丝DD从地点1到地点n去找他的女神QQ,总共n个点,两个点之间可能有多条路,每条路上记录一个距离w和一个状态c,DD只能按女神要求走,即‘L’->’O’->’V’->’E’->’L’->’O’->’V’->’E’->.... etc,走到终点时LOVE必须是完整的,而且最少有一个LOVE。解题思路:开始用优先队列+bfs做,TLE,这样做不能对点标记,只能对边标记,所以一个点的同一状态可能很多次入队列,无奈的TLE。这题其实仔细想想就
阅读全文
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3873题目大意:美国佬打算入侵火星,火星上有n个城市,有些城市可能受其他城市保护,如果i城市受j城市保护,那么你必须先攻占j城市才能再攻占i城市,问你攻占城市n的最短时间是多少。解题思路:开一个优先队列,每次将图中不受保护并的节点加入队列(注意不受保护的节点可能重复入队,所以要做个标记,只处理优先队列中第一个出来的重复节点),spfa()单源最短路进行操作,num[u]表示保护节点u的城市有多少个,当num[u]为0的时候可以把u加入队列。处理受保护的节点v时,disv=max(disu,dis[v
阅读全文
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3870题目大意:O(-1).解题思路:开始直接构图,套Dinic()模板,悲剧的TLE。再认真看看题,n为400,也就是有400*400个点,边大概是节点的4倍大小,明显最大流会TLE,对偶图构图很蛋疼。 对于点数边数很大的求最小割来说,可以构造它的对偶图,构造对偶图要求原图中s和d必须在图的外侧,对偶图G*中的每个点对应G中一个面,每一条从st到sd的最短路径都对应原图s到d的一个最小割。构造对偶图条件:1、原图是一个平面图2、图中的一个点为源点s,另外一个点为汇点t,且s和t都在图中...
阅读全文
摘要:题目链接:http://poj.org/problem?id=1679题目大意:让你求最小生成树,并判断最小生成树是否唯一。解题思路:本题其实是想让你求次小生成树,如果次小生成树和最小生成树权值和相等,最小生成树则不唯一,否则唯一。解题步骤:1、先求最小生成树,求最小生成树过程中标记出现在最小生成树中的边以及fp[i][j],fp数组保存的是最小生成树上从i到j的最大权值。2、枚举所有未出现在最小生成树中的边map[i][j],找到tp=(map[i][j]-fp[i][j])差值最小的进行替换,为什么可以这样?因为加入map[i][j]到最小生成树中后必形成环,然后消去环中非map[i][j
阅读全文
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3849题目大意:给你一个关系网,问你那两个人是关键关系,即在整个关系网中起到链接作用,不可失去,这样对应到无向图中不就是要你求哪些边不在强连通分量中吗,即不在任何环中的边。解题思路: 利用tarjan算法的变形,以前用tarjan求的是有向图的强连通分量,这个是无向图,所以要进行相应的变形。1、 首先,要求割边则对应的图必须是连通图,如果不是连通图那么割边就是0.2、开始WA了几次,因为我开始这么想:一条边连接的两个顶点只要在不同的连通分量中(low[]值不同),那么这条边就是割边,好像想想有道理唉
阅读全文
摘要:题目链接:http://poj.org/problem?id=2396题目大意:有一个n*m的矩阵,每个位置(i,j)都有一个值,接下来输入n个数,每个数代表矩阵对应行的和,接下来输入m个数,每个数代表对应列的和。接下来有Q个操作,每个操作输入i j c val。(注意i==0||j==0的特判。这里不说明了)1、当c为'>': 表示第i行j列的数值要大于val。(实际下级要设为val+1)2、当c为'<': 表示第i行j列的数值要小于val。(实际上界要设为val-1)3、当c为'=': 表示第i行j列的数值要等于val。让你求是否
阅读全文
摘要:题目链接:http://poj.org/problem?id=2987题目大意:一个公司有n个员工(里面包括董事长,经理,普通员工等等),现在遇见了金融危机,公司要开始裁员了,每个人对公司的价值不一样(可能为正可能为负),当你裁员一个员工时,这个员工他手下的员工必须一起裁掉,问你如何裁员能使公司得到的利益最大,而这种裁员方法必须得裁掉多少个员工。建图模型:最大权闭合子图指选择u,则u以下关系的都要选,一定要选到底,不能跳过u选它以下的。增设一个超级源点和一个超级汇点,(1->n)的点中,当点权为正时,从源点向该点连一条权值为点权大小的边,当点权为负时,从该点连一条权值大小为它的绝对值的边
阅读全文
摘要:此类问题可以分为三小类问题: 一、无源汇有上下界最大流 二、有源汇有上下界最大流 三、有源汇有上下界最小流 1、无源汇有上下界最大流 题目链接: sgu194 Reactor Cooling 题目大意:给n个点,及m根pipe,每根pipe用来流躺液体的,单向的,每时每刻每根pipe流进来的物质要等
阅读全文
摘要:题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=11025题目大意:有一个类似于工业加工生产的机器,起点为1终点为n,中间生产环节有货物加工数量限制,输出u v z c, 当c等于1时表示这个加工的环节必须对纽带上的货物全部加工(即上下界都为z),c等于0表示加工没有上界限制,下界为0,求节点1(起点)最少需要投放多少货物才能传送带正常工作。解题思路:经典题目,有上下界的最小流。 1、du[i]表示i节点的入流之和与出流之和的差。 2、增设超级源点st和超级汇点sd,连(st,du[i](为正)),(-du[i]
阅读全文
摘要:题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=20757题目大意:给出一个屋源无汇的网络,每条边都有容量上下界,让你求一个可行方案使得每个节点都流量守恒。解题思路:题目既然无源无汇点,那么所有节点都应该满足”入流=出流“这个流量平衡条件,为了方便解题,我们令每条边的容量下界为0,此刻容量上界变成了up-down(上界减去下届),我们定义一个du[]数组保存每个节点的入流之和与出流之和的差,建一个超级源点和一个超级汇点,当du[i]>0,说明入流大于出流,为了满足流量守恒,连一条st到i容量为du[i]的边
阅读全文
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1733题目大意:有一个类似于迷宫搜索的图,‘.’代表的是无人的路,'X'代表有人的点,'#'代表此点不可通过,'@'代表门口。每个位置每一秒钟只能站一个人,每个位置到上下左右点的时间为1,问你所有人能不能出去,能出去输出所有人都出去的最小时间,否则输出-1.解题思路: 第一次写这样的构造n层网络流的题,一开始完全没思路,纠结了良久。 先用BFS判断所有人能不能出去,不能出去直接输出-1,不用构图了。二分枚举时间,选出所有人都能出去的最小时间。因为每点每
阅读全文
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1569题目大意:给你一个m*n的格子的棋盘,每个格子里面有一个非负数。 从中取出若干个数,使得任意的两个数所在的格子没有公共边,就是说所取数所在的2个格子不能相邻,并且取出的数的和最大。解题思路:说实话,这样的网络流构图真的难想到,唉,练得太少了。定理: 最大点独立集=sum-最小点覆盖集。 这里要我们求最大点独立集,由上面的定理我们就可以转换为求最小点覆盖集。我发现网上很多题解对于割这一块讲解的不知所云,可能是对割的理解还没深入吧,不会就看别人解题报告,然后自己按照自己的理解不知所...
阅读全文
摘要:题目链接:http://acm.hust.edu.cn/problem.php?id=1024题目大意:有n个男孩和n个女孩参加party,现在让你将他们分成n对不同的舞伴(只能男和女),男孩女孩可以和自己喜欢的人,最多和k个自己不喜欢的异性配对,现在问你能跳多少次舞(n对配完一次跳一次舞,每次的舞伴都不能重复)。解题思路: 网络流,关键在于建图。 把男性拆成两个点,分别放置在两个集合内,Xa和Xb,女性拆成两个点,分别放置在Ya和Yb内。Xa到Xb连接一条有向边,权值为k,Yb到Ya连接一条有向边,权值为k。当boy喜欢girl时,Xa和Ya之间连接一条对应的有向边权值为1,当b...
阅读全文
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1811题目大意:给你一些ranking的比值关系,然后利用这些比值关系进行排名,让你确定是否能制作出排行榜,是的话就输出"OK",否则就请你判断出错的原因,到底是因为信息不完全(输出"UNCERTAIN"),还是因为这些信息中包含冲突(输出"CONFLICT")。如果信息中同时包含冲突且信息不完全,就输出"CONFLICT"。解题思路:1、利用并查集操作,将相关联的 '=' 两边的数字先放存在一个集合里。
阅读全文