
图论
文章平均质量分 87
kopyh
这个作者很懒,什么都没留下…
展开
-
cf-557D Vitaly and Cycle
题目:http://codeforces.com/problemset/problem/557/D题意:给出一些点和边,要求加上一些边之后得到最小的奇环,求加边的最小数量,及加该数量边时的方法数。思路:对所有联通分量染色,二分图的思想,当可以染色为二分图时必然只存在偶环,在二分图其中一边随便加入一条边即可,总数为C(sum1,2)+C(sum2,2);无法染色为二分图则已经原创 2015-08-14 16:54:16 · 516 阅读 · 0 评论 -
Lightoj-1356 Prime Independence(质因子分解&&二分图最大独立集)
题目:http://lightoj.com/volume_showproblem.php?problem=1356题意:找出一个集合中的最大独立集,任意两数字之间不能是素数倍数的关系。思路:最大独立集,必然是二分图。最大数字50w,考虑对每个数质因子分解,然后枚举所有除去一个质因子后的数是否存在,存在则建边,考虑到能这样建边的数一定是质因子个数奇偶不同,所以相当于按原创 2016-04-06 19:12:53 · 1390 阅读 · 0 评论 -
POJ 1330 Nearest Common Ancestors
题目:http://poj.org/problem?id=1330题意:给出一棵树,求其中两个点的最近公共祖先。思路:测试模版。代码:const int MAXN = 101001;const int MAXM = 101001;const int MAXQ = 101001;struct Tree{ int head[MAXN];//前向星存图原创 2016-01-12 13:17:44 · 353 阅读 · 0 评论 -
菜鸟系列——最近公共祖先(LCA)
菜鸟就要老老实实重新学起:最近公共祖先(LCA)求树上亮点的最近公共祖先,就是求包含这两个点的最小的子树的根节点。Tarjan(离线算法):就是预先储存所有询问,然后深搜便利所有点,后序遍历找到每个询问中的点,对于每个询都是在两个点都找到的那一刻得到最近公共祖先,后序遍历中不断把点加入并查集中,已加入的最上面的点就是当前的根节点。模版:const int M原创 2016-01-12 14:28:12 · 511 阅读 · 0 评论 -
HDU 4571 Travel in time
题目:http://acm.hdu.edu.cn/showproblem.php?pid=4571题意:有n个景点,互相之间有一些路,每条路都有耗时,游玩每个景点也有一个耗时,游玩每个景点之后会获得一个满意度,现在要从给定的s景点走到e景点,要求在t时间内获得最大的满意度,且游玩当前景点能够获得的满意度必须大于前一个景点时才能游玩。思路:因为游玩的下一个景点的满意度一定大于当前原创 2015-10-20 18:21:14 · 509 阅读 · 0 评论 -
HDU 4568 Hunter
题目:http://acm.hdu.edu.cn/showproblem.php?pid=4568题意:n*m的棋盘中放着一些宝藏,每个点都有经过的耗时,要求从任意位置进入棋盘后拿到所有宝藏然后离开棋盘,每个点可以经过多次,求最小耗时,-1的点是不可走的。思路:图的大小是200*200但是宝藏最多只有13个,所以很容易想到重新建图,把13各点互相之间的距离求出来建图然后有一个虚原创 2015-10-20 18:06:50 · 438 阅读 · 0 评论 -
LightOJ-1356 Prime Independence
题意:找出一些数字的最大质独立集,就是集合能的所有数互相之间不会出现 a[i]==t*a[j] (t是质数) 的情况。思路:首先想最大独立集对于一般图是NP问题,通常只有求二分图最大独立集,然后就是如何把这些数字分为二分图。能够想到如果一个数字等于另一个数字乘以一个质数,那么这两个数字的质因子分解应该只有这一个质数的差别。也就是只会多一个质数,数字上限只有500000,完全可以原创 2015-09-28 23:47:29 · 1472 阅读 · 0 评论 -
菜鸟系列——二分图匹配
菜鸟就要老老实实重新学起:二分图匹配——匈牙利算法(dfs实现)dfs深搜找增广路经求二分图最大匹配。//二分图匹配:二分图最大配对数//最小点覆盖:选取最少的点覆盖所有边//最大独立集:选取最多的点,集合中点之间无连接//二分图最大匹配==最小点覆盖==总点数-最大独立集模版:#define N 1234int n,m,cnt;int f[N];int v原创 2015-07-25 17:04:42 · 688 阅读 · 0 评论 -
HDU-3394 Railway
题目:http://acm.hdu.edu.cn/showproblem.php?pid=3394题意:有许多铁路,他们形成了许多环,现在要找出他们中不存在任何一个环中的铁路数和同时存在于多个环中的铁路数。思路:不存在于任何一个环中也就是无向图中的桥,所以这道题是求无向图的双连通分量,找出所有的桥就是第一个答案,存在与多个环中就是某个双联通分量相同中的边数大于点数,那么这个双联原创 2015-09-10 17:02:00 · 786 阅读 · 0 评论 -
POJ-2942 Knights of the Round Table
题目:http://poj.org/problem?id=2942题意:骑士们要开会,有的骑士之间有矛盾,要求每次会议的人数是奇数并且做成一圈之后相邻的骑士之间不能有矛盾,问有多少骑士一次会议都无法参加而被开除?思路:这两天一直在做这道题,前面做的双连通分量的题都是为了做这道,确实出的很好。这道题首先想到的是所有骑士之间建立补图,就是将没有矛盾的骑士之间连线,表示他们可以坐原创 2015-09-10 17:22:17 · 468 阅读 · 0 评论 -
菜鸟系列——双连通分量
菜鸟就要老老实实重新学起:双连通分量就是求图中能够彼此之间有不少于2条路线到达的点集,也就是点集中不存在割点(若无重边)。求无向图的双联通分量与有向图的强联通分量相同,用Tarjan算法,只是因为是无向图所以注意加边是双向加但是深搜时不能搜回父节点。模版:#define N 110vectorg[N];stackst;// 深度优先搜索访问次序, 能追溯到的最早原创 2015-09-09 19:48:00 · 1053 阅读 · 0 评论 -
ZOJ-3795 Grouping
题目:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5303题意:浙大有N个人,给出一些年龄对比,Si比Ti的年龄小,现在要将他们分组,要求每组中的所有人之间不能直接或者间接的对比出年龄大小,求最少分几组。思路:这几天为了poj2942一直在看连通题,这是最后一道了吧,明天开别的。这道题很容易想出来要把原创 2015-09-10 20:49:35 · 517 阅读 · 0 评论 -
POJ-1904 King's Quest
题目:http://poj.org/problem?id=1904题意:每个王子都有喜欢的妹子,给出了其中一种匹配方案,要求出每个王子能够娶的所有人,当王子娶这些妹子中的一个时其他王子都有能够娶到的喜欢的妹子。思路:这道题的想法很精妙,因为给出了其中一个匹配方案,所以可以通过搜其他可以交换的方案,也就是在同一个强联通分量的点可以互相交换,也就可以被其中的所有王子娶。也就从一原创 2015-09-08 22:25:03 · 432 阅读 · 0 评论 -
HDU-4786 Fibonacci Tree
题目:http://acm.hdu.edu.cn/showproblem.php?pid=4786题意:给出一个图,其中的边有黑白两种,求是否可以找到白边数量为斐波那契数的生成树。思路:只有黑白边,白边为1,黑边为0,求出最小生成树和最大生成树的大小就是取白边的区间,二分找区间内是否存在斐波那契数就行了。代码:#define N 1123456#define M原创 2015-08-06 20:41:00 · 301 阅读 · 0 评论 -
POJ-2553 The Bottom of a Graph
题目:http://poj.org/problem?id=2553题意:这题的意思是找出所有的sinks的点,sinks就是所有它能到达的点都能够到达它,也就是这两个点都在一个封闭的强连通分量中,封闭是指这个强连通分量中没有一个点指向外面的点。思路:主要是理解题意有难度,然后就好说了,直接Tarjan求出强连通分量然后把出度为0的强连通分量中的点排序输出即可,最后判点时写的有些原创 2015-09-07 21:02:58 · 358 阅读 · 0 评论 -
HDU-4751 Divide Groups
题目:http://acm.hdu.edu.cn/showproblem.php?pid=4751题意:n个人之间有互相认识的关系,问是否能把所有人分成两份,使每份中的所有人之间互相认识。思路:就是把一个有向图分成两个完全图。可以逆向考虑,既然要分成两个图又是完全图,反过来就是一个二分图,把不认识标记为边,互相认识是没有边,也就是一个标准的二分图了,然后染色判断二分图就行了。原创 2015-08-31 18:38:56 · 412 阅读 · 0 评论 -
HDU-4750 Count The Pairs
题目:http://acm.hdu.edu.cn/showproblem.php?pid=4750题意:求价值大于等于t的点对数,点对的价值等于两点间所有路径中价值最小的。路径的价值等于路径中所有边中的最大值。对于所有询问求出结果。思路:就是无向图求两点间所有路径最大值的最小值,,呃,就是kruskal求最小生成树的过程,当前合并的两个集合的乘积(就是两集合所有点的原创 2015-08-30 13:43:37 · 366 阅读 · 0 评论 -
HDU5943 Kingdom of Obsession(匹配问题)
题目:acm.split.hdu.edu.cn/showproblem.php?pid=5943题意:有n个人,每个人的标号以此是s+1到s+n,要求将所有人重新排序之后满足每个人的位置y能够保证被他的标号整除,就是数组重排之后满足每一位的a[i]%i==0。思路:首先很容易想到一定区间之内最多只有一个质数,所以多于一个质数的直接NO,那么这段区间不会很长,考虑直接二分图匹原创 2016-10-29 18:37:28 · 1141 阅读 · 0 评论