
图论
zyy_2017
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
poj1789 最小生成树 水题
POJ 1789大致题意:简单说一下题意,现在有几个字符串,字符串i和字符串j的距离为他俩不同字符的总个数(不是第一个不同字符出现的位置!!!)。现在给你一个式子:1/Σ(to,td)d(to,td),让你求这个式子的最大值。那我们直接就能看出当Σ(to,td)d(to,td) 最小时,此式子是最大的。而求Σ(to,td)d(to,td)最小值正是求最小生成树问题。原创 2017-08-24 17:15:48 · 345 阅读 · 0 评论 -
hdu1281 棋盘游戏 二分图最大匹配 枚举
HDU 1281 点击打开链接大致题意:有一个n*m的棋盘,现在我们要在一些给定的格子里放“车”。我们要求两个值:(1)在给定的格子里最多能放“车”的数目。 (2)在给定的格子里,假如去掉某个格子,但影响了放“车”的最大数目。我们记它为重要点,我们需要求有几个重要点。大致思路:对于(1),我们将给出的格子的x值和y值分原创 2017-08-31 15:58:12 · 301 阅读 · 0 评论 -
hdu2819 Swap 二分图最大匹配 输出路径
HDU 2819 点击打开链接大致题意:有一个n*n的矩阵,这n*n个数要么是0,要么是1。现在问你,是否能通过一系列操作(行与行交换,列与列交换)使得操作之后的矩阵的主对角线全为1。大致思路:我们将x坐标和y坐标分成两个集合,如果(x,y)的位置上是1,就将x和y进行连边。那么,就构成了一个二分图。如果这个二分图的最大匹配是n的话,那么代表这个矩阵可以进行变换使得主对角线全为原创 2017-09-01 12:47:24 · 291 阅读 · 0 评论 -
hdu 3549 最大流 水题
这应该是最简单的最大流问题了,直接套模板。。。。#include#include#include#include#include#include#include#include#define inf 0x3f3f3f3fusing namespace std;int dis[20];int flow[500][500];int n,m;int bfs(){原创 2017-09-18 19:35:05 · 447 阅读 · 0 评论 -
poj 1459 Power Network
POJ1459 Power Network 点击打开链接大致题意:题蛮长的,但是一堆废话,我读了三遍才懂。现在有np个发电站,每个发电站能生产最多P电量。有nc个顾客,每个顾客能消耗最大C电量。其余的点代表转电站,既不消耗也不生产。每两个点之间有一条输电线,最大输送电量为L。现在问,所有的顾客消耗的总电量最大是多少。。。这道题就是求最大流,不过源点不唯一,汇点不唯一,不原创 2017-09-19 21:24:38 · 463 阅读 · 0 评论 -
hdu-1151(最小路径覆盖)
大致题意:有n个十字路口,m条街道,每两个十字路口组成的街道是单向的,现在要在一些十字路口放置一些士兵进行看护,士兵可以通过街道从一个十字路口到达另一个十字路口(注意是单向的,且每个路口最多被一个士兵看护),问最少需要几个士兵就可以看护所有的十字路口?解题思路:本题强调图是无环图,我们想,假如开始n个十字路口都是独立的(没有街道),那么需要n个士兵进行看护。如果有两个十字路口可以组成一条单向路,那...原创 2018-02-08 22:11:37 · 233 阅读 · 0 评论 -
二分匹配-hdu-1281
这道题如果读懂了,就很简单。大致题意:一个n*m的棋盘,有k个可以放‘車’的格子,放完‘車’之后,要保证不能互相攻击。假设最多能放t个‘車’。如果某个能放‘車’的格子现在不可以放了,且结果最多能放的‘車’数目不是t了,就称这个格子为重要点。最后输出重要点的数目和t。大致思路:先将最大数目求出来,也就是利用行和列(将可放的格子的行和列进行连边)两个集合求出最大匹配ans。然后在一一枚举每个格子不可以...原创 2018-02-09 14:30:12 · 254 阅读 · 0 评论 -
欧拉路 hdu-1116
#include<stdio.h>#include<iostream>#include<string.h>#include<algorithm>using namespace std;//有向图欧拉路 要记录每个节点的入度与出度int in[30];int out[30];int fa[30];//是否存在欧拉路的前提条件是图必须连通...原创 2018-02-16 10:58:29 · 169 阅读 · 0 评论 -
关于dinic算法中当前弧如何优化问题
刚开始学最大流dinic算法时,并没有运用优化,但是也解决了一些题。后来在做hdu的3572时,一直超时,被卡时间。所以上网查了下,了解到dinic中必须要加当前弧优化才可以过。然后查了下当前弧优化是什么鬼,网上的解释也是比较模糊,自己便思考了一番,于是说一下自己的想法。当前弧优化就是为了防止走重复的边,从而较少了时间。int dfs(int k,int y){ if(k==maxl+1...原创 2018-02-20 16:23:33 · 1189 阅读 · 1 评论 -
LCA最近公共祖先 hdu-2586
大致题意:一个城镇有n个房子,有n-1条双向路将n个房子连接起来,城镇中不会有环。每条路都有自己的长度,现在问你任意两个房子间的距离是多少。既然不会形成环,那我们可以任选一点作为根,“吊挂”起来形成一棵树。那任意两个房子间的距离就是这两个房子的最近公共祖先分别到达两个房子距离的和。我们先利用dfs将每个点到达根的距离都求出来,然后求A和B的距离就转换成(A和根部之间的距离 - 最近公共祖先和根部之...原创 2018-02-21 18:18:03 · 381 阅读 · 0 评论 -
ABC048&ARC064(upcoj 6487) Cosmic Rays (最短路)
题目大意:在二维平面内,给出起点和终点,你可以任意方向行走,给出n个圆(圆心x,y和半径r),它们可能相交或者相离,在圆内行走不会受到辐射。现在问你,你从起点走到终点,被辐射的最短路程是多少。换个角度思考,如果要从A圆心走到B圆心,被辐射的路程是这两个圆的圆心距减掉它俩半径之和(肯定按照直线方向走才保证最短)。如果小于零,代表这两个圆相交,被辐射的路程也就是0。所以这道题的解法是:求出任意两个圆心...原创 2018-05-29 21:41:23 · 563 阅读 · 0 评论 -
Codeforces Round #498 (Div. 3) E. Military Problem(dfs记录)
题意:给出一棵树,然后q个询问(u,k),每个询问代表以u为子树根,向下遍历(序号小的优先),问遍历到第k个元素是多少?如果k大于这棵子树的节点总数,那么输出-1.思路:首先n和q是20000的,如果每次询问都遍历一次,那么复杂度是n^2,肯定会超时。所以我们可以遍历整棵树,只遍历一次,在遍历的时候记下每个子树根的起点和终点,然后把遍历的值放在一个数组中,最后每次询问时,我们可以直接输...原创 2018-07-22 16:42:18 · 289 阅读 · 1 评论 -
upc 6744 求和(倍增求LCA)
#include<stdio.h>#include<iostream>#include<string.h>#include<algorithm>#include<vector>#include<math.h>using namespace std;#define ll long longconst ll mo...原创 2018-08-11 16:20:37 · 232 阅读 · 0 评论 -
hdu1269 强连通图判断
第一道强连通题。。。以前貌似用并查集做过。。。代码:#include<stdio.h>#include<iostream>#include<string.h>#include<algorithm>using namespace std;#define maxn 100000int tot;struct Node{ i...原创 2018-08-19 16:09:49 · 710 阅读 · 0 评论 -
2018 acm-icpc焦作网络赛 F(费用流+区间离散化)
这道题和poj3680很相似,不过这道题每个点只能重复一次。但我们可以将右端点加一,这样就可以建图了。区间离散时加了一段代码,导致T了10多次,后来发现这段代码不加也可以,因为,离散化之后保证相对不相交就可以。。。#include<stdio.h>#include<iostream>#include<string.h>#include<qu...原创 2018-09-18 21:12:41 · 311 阅读 · 0 评论 -
hdu 2485 Destroying the bus stations(费用流)
题意:n个点,m条有向边,问最少去掉几个点使得从1到n的路径(最短路)大于k?思路:这道题用费用流解,感觉好奇妙。。。首先我们想,求费用流时,我们是每次用spfa求得最短路然后进行减流,直到找不到从汇点到源点的路径。那么对于这道题,当我们增广出一条从1到n的最短路时,我们可以将其中的某个点删去,使得这条路以及从这条路分支出来的路都使得不能从1走到n。所以我们可将点2~n进行拆点,所...原创 2018-09-14 20:18:38 · 229 阅读 · 0 评论 -
第九届蓝桥杯A组省赛——全球变暖
【题目描述】你有一张某海域NxN像素的照片,"."表示海洋、"#"表示陆地,如下所示:其中"上下左右"四个方向上连在一起的一片陆地组成一座岛屿。例如上图就有2座岛屿。由于全球变暖导致了海面上升,科学家预测未来几十年,岛屿边缘一个像素的范围会被海水淹没。具体来说如果一块陆地像素与海洋相邻(上下左右四个相邻像素中有海洋),它就会被淹没。例如上图中的海域未来会变成如下样子:请你计算:依...原创 2019-03-12 15:37:30 · 218 阅读 · 0 评论 -
poj1325 Machine Schedule 最小点覆盖
POJ 1325 点击打开链接大致题意:有两个机器A和B,A有n种模式,B有m种模式。现在有k个任务,每个任务可以由A机器的一个模式或者B机器的一个模式完成。例如(i,x,y)代表第i个任务可以在A机器的x模式下完成,也可以在B机器的y模式下完成。每个机器由一个模式转换成另一个模式需要花费1。现在问你,最少花费多少就可以将所有任务完成。大致思路:看题意,就知道这是一个二分图问题。可原创 2017-08-31 14:26:52 · 260 阅读 · 0 评论 -
hrbust 1491 游河 最大流 dinic模板
HRBUST 1491 游河 点击打开链接最大流讲解:点击打开链接第一次看网络流,看了一上午,总算看出点毛头。。。。接下来就是刷题巩固找毛病了。。。这道题完全是一道模板题,不过第一次写,写模板写了半天 - -!我们把每条道都看成容量为1的管道,这样求得的最大流就是答案。代码:#include#include#include#include#include#i原创 2017-09-15 21:06:53 · 193 阅读 · 0 评论 -
poj1094 Sorting It All Out 拓扑排序 有向图判环 vector 模拟
POJ 1094题目大意:输入n,m。n代表26个字母的前n个,m代表有m条输入。然后输入m条类似“A然后根据这些字符关系,判断是否能找到一个唯一的序列使得满足这些字符的大小关系。(拓扑排序~)如果可以的话,那么输出这个唯一的序列,不能的话,有两种情况,一是有环(A这道题还明确的告诉你,从输入的第一个关系开始,如果在中途出现有环,或者可以输出正确序列,那么你可以直接输出答案。然原创 2017-08-21 11:15:20 · 299 阅读 · 0 评论 -
poj1860 Currency Exchange 最短路变形 spfa 判环 思考
POJ 1860题目大意:有个城市有m种货币,n个货币兑换站。每两种货币兑换分别有相应的汇率和手续费。例如,你现在有s个A货币,那么用A货币兑换B货币,你可得到(s-cab(A兑换B的手续费))*Rab(A兑换B的汇率)个B货币。你现在有第S种货币V个,然后问你,是否能通过一系列的兑换,使得最后自己手中的第S种增加了。。。大致思路:此题要用最短路的思想进行求解,dis[i]原创 2017-08-22 10:17:27 · 283 阅读 · 0 评论 -
poj2485 Highways 最小生成树 水题 kruscal
很水的一道题,就是让你输出最小生成树中最大的一条边。那我们直接用kruscal,将所有边进行排序,然后一一枚举,能选的最后一条边就是答案。代码:#include#include#includeusing namespace std;int fa[505];struct Edge{ int st; int ed; int len;} edge[50000原创 2017-08-25 13:34:12 · 207 阅读 · 0 评论 -
poj3259 Wormholes 最短路 spfa 负权环判断
POJ 3259题目大意:就是判断给出的图中是否存在一个负权环,如果有的话,那么这个人转了一圈之后时间总和小于零,代穿越到之前了,也就满足了他。。。大致思路:裸的spfa判负权环,如果有一个点入队的次数大于总结点数,那么就代表存在一个负环。代码:#include#include#include#include#includeusing namespace std;原创 2017-08-22 15:54:56 · 395 阅读 · 0 评论 -
poj3026 Borg Maze bfs+最小生成树 prim
POJ 3026题目大意:给你一个y*x的字符矩阵,A代表外星人,S代表起点。然后现在有一个团队从起点出发去找外星人。从起点出发或者找到一个外星人,这个团队就可以分成几个小团队然后分头去找。找完所有外星人花费的总距离是所有团队的距离之和。然后问你,最小总距离话费是多少。(这道题有个坑,会在输入x,y之后输入一大堆空格。(呵呵...)比如第二个测试样例:7 7#####原创 2017-08-25 17:13:59 · 358 阅读 · 1 评论 -
poj1062 昂贵的婚礼 最短路变形 spfa 枚举 思考
POJ 1062题目大意:终于看到一道中文题了。。。既然题目是中文,题意就自己去看吧= - =。。大致思路:思考一下,将数据用图画出来,你就会发现这其实就是寻求最短路(最小代价)。我们要自己设置一个源点(例如0是源点),那么n个物品,就是这个起点所能到地方。然后一个物品与另一个物品就像一个地点到达另一个地点(单向的)。至于题中的等级,我们只需每次枚举一个包括1物品(酋长)的原创 2017-08-22 21:07:57 · 319 阅读 · 0 评论 -
hdu 1285 基于入度数排序输出的拓扑排序&&单调栈
内容:有N个比赛队(1input输入有若干组,每组中的第一行为二个数N(1output给出一个符合要求的排名。输出时队伍号之间有空格,最后一名后面没有空格。其他说明:符合条件的排名可能不是唯一的,此时要求输出时编号小的队伍在前;输入数据保证是正确的,即输入数据确保一定能有一个符合要求的排名。Sample Input4 31 22 34 3原创 2017-08-14 11:28:06 · 396 阅读 · 0 评论 -
poj1125 Stockbroker Grapevine 最短路 Floyd 思考
大致题意:有n个人,第i个人可以给a[i]个人发消息,给每个人发送消息也有相应的时间。一个人给剩下的n-1个人发送消息的总时间定义为给每个人发送消息的时间的最大值。现在问你,应该从哪个人开始发消息使得总时间最少。大致思路:floyd模版题,我们求出n个源点所有的最短路,如果有一个源点到不了剩下的所有点,那么代表此路不通。每次枚举一个源点,求出源点到其他点的最短路的最大值。最后求原创 2017-08-23 12:44:28 · 233 阅读 · 0 评论 -
poj 2240 Arbitrage 最短路变形 spfa
和poj1860一样,只不过没有了手续费,但套路都是一样的,直接spfa代码:#include#include#include#include#include#includeusing namespace std;#define eps 1e-6double dis[35];int vis[35];mapM;struct Mon{ int to; d原创 2017-08-23 14:31:38 · 200 阅读 · 0 评论 -
CCF 2017-03-4 地铁修建
大致思路:最短路变形,建立dis数组。不过dis[i]保存的不是到达i点的最短路径,而是能到达i点的所有路径中每条路径中最长的天数的最小值。(有点绕脑,就像样例说明一样,1到6有两条路径,其中一条路径要花6天完成(完成这条路的时间肯定是修这条路径的所有隧道花费时间最长的),另一条要7天,那么答案就是6天。)所以当用spfa进行点松弛时,有:dis[to]=max(dis[top],cost原创 2017-08-23 15:16:24 · 473 阅读 · 0 评论 -
poj1469 二分图最大匹配 匈牙利算法BFS实现
POJ 1469二分图讲解:[url=http://blog.jobbole.com/106084/]http://blog.jobbole.com/106084/[/url]大致题意:有n个学生和p门课程,每个人可以选0,1,2......门课程。给你每个学生喜欢的课程编号,然后问你是否能从n中选p个学生,使得每个学生所选的课程都不同且每门课程都有一个人选。大致思路:其实题意原创 2017-08-28 18:52:55 · 1042 阅读 · 0 评论 -
ccf 游戏 bfs
题意:这道题蛮好的,以前做bfs基本上都是二维的。这道题从题面上就能看出来是bfs,我们记录下每个有危险性的点和各自的起始时间和结束时间,然后直接套模板,答案是对的,但会超时。以前,我们都是用一个数组来标记当前点是否能入队(队列中要保证不能有相同元素)。但这道题,可以从当前点出发,然后经过一系列移动再回来,所以不能直接用二维数组来标记,但是我们发现,再次回来的时候时间是不同的,所以我们原创 2017-09-22 20:14:45 · 328 阅读 · 0 评论 -
poj3041 Asteroids 最小点覆盖 二分图 匈牙利算法BFS
POJ 3041大致题意:题意比较好理解,在一个nxn的矩阵中,有几个点,你可以任意选择一个点,然后将它所在行后者所在列的所有点都清空。问你最少选几个点,才能将所有点清空掉?大致思路:将x的值和y的值进行划分,再根据点的坐标进行连接,形成一个二分图。那么这道题的本质就是,寻求最小的一个点集合,使得所有的边都与这个集合的点有关系。最小点覆盖问题~~~根据konig定理:最小点覆盖原创 2017-08-29 17:47:26 · 301 阅读 · 0 评论 -
poj2446 Chessboard 二分图最大匹配 思考 匈牙利算法BFS实现
POJ 2446 点击打开链接大致题意:有一个m*n棋盘,上面有k个洞,你现在有许多个规模为1*2的小卡片。你可以将卡片覆盖在棋盘上(卡片必须整个覆盖在棋盘上),正好覆盖一个1*2的空间,但是不能覆盖有洞的棋盘格子。问,你是否能用一些卡片(不限个数),将棋盘的无洞格子全都覆盖?例如:(1):它是合法的,全部覆盖。(2)不合法,因为有一个洞被覆盖了。(3)原创 2017-08-29 19:08:15 · 491 阅读 · 0 评论 -
poj1274 The Perfect Stall 二分图最大匹配模板题 匈牙利算法BFS
POJ 1274 点击打开链接heshui原创 2017-08-29 19:46:40 · 384 阅读 · 0 评论 -
hrbust 1492 盒子 二分图最大匹配
HRBUST 1491 盒子 点击打开链接中文题意,简洁明了。大致思路:果然,二分图构建很不好想,但是想到了,自然就柳暗花明了。我们这样想,只要匹配到一次,那么一定会有个盒子被装进另一个盒子中,也就意味中有一个盒子不见了,那么我们求出最大匹配数,也就找到最多个““不见得盒子”,用总数减去这些盒子,剩下的就是最少能看见的了。。。代码://匹配成功一次,代表有个盒子被藏到另一个原创 2017-09-15 20:59:52 · 209 阅读 · 0 评论 -
第十五次CCFCSP认证——数据中心(SPFA变形)
题意:题目比较繁琐,其实就是从给的图中,找出一棵树,使得这棵树最大的边尽可能小,然后求的就是这条“最大边”。有两种解法,一是最小生成树中最大边即是答案(最小生成树采用贪心策略,每次选最小的边,那么生成的树中最大边一定是所有生成树中最大边中最小的)。二是采用spfa变形,这就和之前的地铁修建那道题一模一样(不过最后要取dis[1.2...n]中的最大值),将伸缩公式dis[to]>di...原创 2019-08-27 19:27:49 · 408 阅读 · 0 评论