图论
JavonLu
想得很多,所以需要求做更多
展开
-
最小生成树
本来想好好写的....连续电脑挂了3次....就转载一篇了....先看一个结论:次小生成树可由最小生成树换一条边得到 证明:咱换种方式去看待这个结论(一个生成树可以通过换边得到另一个生成树),T是某一棵最小生成树,T0是任一棵异于T的生成树,通过变换T0 --> T1 --> T2 --> ... --> Tn (T) 变成最小生成树。所谓的变换是,每次把Ti中的某条转载 2016-01-09 21:54:42 · 305 阅读 · 0 评论 -
HDU 5886 - Tower Defence(最短路+最小割)
题目题意: n个点,m条边,构建有权无向图 告诉你有人从n点一定会选最短路走到1,然后你是1,要在某些地方设置障碍,要求断开N。思路: 比赛时理解出了问题,以为是使1与n不连通,即求整个图的最小割,实际上题目中要求对方一定走最短路,是要先跑最短路,根据最短路来建图,在新图上跑最小割就可以了。#include<iostream>#include<cstring>#include<cstdio原创 2016-09-22 21:51:28 · 435 阅读 · 1 评论 -
HDU 4619-Warm up (二分图匹配)
题目 题意:给你两种纸牌 ,一种水平放置共有n张 ,一种竖直放置共有m张。水平放置的纸牌占据点(x, y)和(x + 1 , y) , 竖直放置的纸牌占据点(x , y) 和 (x , y + 1)。水平放置的牌之间不会重叠,竖直放置的牌之间也不会重叠,但是水平放置的牌和竖直放置的牌之间可能会重叠。让你拿走一些牌,使剩下的牌之间不会重叠并且数量最多,输出剩余的最大牌数。 思路:太久没有做二分图匹原创 2016-09-05 21:47:04 · 341 阅读 · 0 评论 -
CSU1808 地铁
题目题意 : n个地铁站,m条线路,地铁站之间花费t时间,不属于同一条线路的地铁站需要“转站”,即加上一个额外花费w(w为线路代号的差值)。 求1到n的最短时间。 思路: 题意很清晰,就是一个最短路。与一般的不同的是多出来一个线路的概念,不同线路之间有花费。 一个站点可以属于多个线路。那么只需要将一个站点根据线路拆为多个点,通过新的点形成的图,相当于每一个点有一个flag,不同加上花费。原创 2016-09-04 15:40:36 · 1567 阅读 · 0 评论 -
Directed Roads (dfs 组合数学 图论)
题目题意:给一张N个点N条有向边的图,边可以逆向。问任意逆向若干条边使得这张图无环的方案数(mod 1e9+7)。思路: 只有两种情况反边不能消除环,处理全部不反向和全部反向两种情况.. 对于每一个环,我们都有2^n-2种方案使得这个环不存在,就是2^n减去全部翻转,和全部不翻转的方案。 最后再处理不在环上的边的数量就可以了。input 3 2 3 1 output 6#include<原创 2016-08-31 19:42:58 · 304 阅读 · 0 评论 -
HDU5538 House Building
题目题意: 看起来很长…就是告诉一个立体在二维平面上,每一个方格的高度,求这个立体的表面积…思路: 对于每一个方格,与上下左右的方格高度进行比较,较大,就加上差值,即为表面积。每一个高度大于等于1的方格再加上顶面的1.#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int map[55][55]原创 2016-09-11 21:43:35 · 429 阅读 · 0 评论 -
HDU5876 补图求最短路 2016ACM ICPC青岛网络赛
题目题意:给定一个无向图以及一个点s,求在其补图,点 s 到其他所有n-1个点的最短距离,并输出思路: 以原图求补图,,bfs遍历,把与点u相连的点排除,不相邻的点在补图里都与点u可以有一条权为1的边,访问完之后即把这些点从set里删除。 同时在bfs的过程中,记录dis[i],每向外一层,为dis[i+1]=dis[i]+1;#include<iostream>#include<cstdio原创 2016-09-10 21:04:50 · 825 阅读 · 0 评论 -
HDU 5855 Less Time, More profit 【最大流-最大权闭合子图】
作为多校签到题的存在…. 题意: n个工厂,m个商店 每个工厂有建造时间 ti ,花费 payi 每个商店和k个工厂有关,如果这k个工厂都建造了,那么能获利 proi 问你求收益(∑pro−∑pay)≥L时,首先满足时间t最小,其次是收益p最大 #include<iostream>#include<cstring>#include<cstdio>#include<set>using原创 2016-08-16 22:57:58 · 645 阅读 · 0 评论 -
网络流 最小费用最大流
最小费用最大流: 按自己的理解,就是在最大流的基础上引入了每一条边的权值cost的概念,则在求最大的流flow,并要求流的重费用最小。 基本思路: 把弧(i,j)的单位费用w[i,j]看作弧(i,j)的路径长度,每次找从源点s到汇点t长度最短(费用最小)的可增广路径进行增广。 1. 最小费用可增广路 2. 路径s到t的长度即单位流量的费用。 简单来说,就是以cost作为路径长度,做从s到原创 2016-02-06 19:41:19 · 387 阅读 · 0 评论 -
网络流 最大流 ISAP算法
网络流问题: 我自己理解,在流网络中,在不违背容量限制的条件下,解决各种从源点到汇点的问题。 ISAP算法概念: 据说不会有卡ISAP时间的题目………时间复杂度O(E^2*V) 首先原理都是基于不断寻找增广路,属于增广路方法。普通的SAP算法比如EK算法,Dinic 算法,由于在寻找增广路时,都需要先进行BFS,BFS时间复杂度O(E),所以总的时间复杂度最坏情况达到O(VE2)。 ISA原创 2016-02-02 22:20:41 · 1548 阅读 · 0 评论 -
二分图的最大匹配 匈牙利算法
转自:http://www.renfei.org/blog/bipartite-matching.html Renfei Song 写的非常详细,清晰。 这篇文章讲无权二分图(unweighted bipartite graph)的最大匹配(maximum matching)和完美匹配(perfect matching),以及用于求解匹配的匈牙利算法(Hun不garian Algorithm);转载 2016-01-27 20:29:15 · 480 阅读 · 0 评论 -
第十届湖南省赛练习
下午花了一些时间吧第十届的湖南省赛题试了试水…. 只出了4题,只是一些简单的模拟,搜索,难一些的网络流,就是一个裸的最小费用最大流,直接套模板就可以了… 会的题目出的比较快,但是其他不熟悉的题目,就彻底傻眼了…… 还是应该更加全面的学….. 不知道队友一起可以出多少…Cool Word 题目简单枚举#include<iostream>#include<cstdio>#include<c原创 2016-03-29 17:39:39 · 313 阅读 · 0 评论 -
hdu3829 二分匹配 最大独立集
Cat VS Dog Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 125536/65536 K (Java/Others)Problem Description The zoo have N cats and M dogs, today there are P children visiting the zoo, each原创 2016-03-05 12:14:22 · 317 阅读 · 0 评论 -
poj1236-Tarjan算法
题目大意: 一些学校连成了网络, 在学校之间存在某个协议:每个学校都维护一张传送表,表明他们要负责将收到的软件传送到表中的所有学校。如果A在B的表中,那么B不一定在A的表中。 现在的任务就是,给出所有学校及他们维护的表,问1、如果所有学校都要被传送到,那么需要几份软件备份;2、如果只用一份软件备份,那么需要添加几条边? 题解: 1.即求强联通分量的个数,或者说是缩点以后入度为原创 2016-02-09 20:22:58 · 322 阅读 · 0 评论 -
LCA算法
LCA问题:如何求树(不限于二叉树)中两个节点(不限于叶子节点)的最近公共祖先节点。 LCA算法分为在线算法与离线算法。 在线算法:可以以序列化的方式一个个的处理输入,也就是说在开始时并不需要已经知道所有的输入。 离线算法:在开始时就需要知道问题的所有输入数据,而且在解决一个问题后就要立即输出结果。 在线算法与离线算法都基于DFS。在线算法与RMQ算法(区间最值查询)相关,离线算法与Tar原创 2016-02-22 21:37:52 · 612 阅读 · 0 评论 -
tarjan算法应用 割点 桥 双连通分量
tarjan算法的应用。 还需多练习…….遇上题目还是容易傻住 对于tarjan算法中使用到的Dfn和Low数组. low[u]:=min(low[u],dfn[v])——(u,v)为后向边,v不是u的子树; low[u]:=min(low[u],low[v])——(u,v)为树枝边,v为u的子树; 1.求割点: 割点:若删掉某点后,原连通图分裂为多个子图,则称该点为割点。 原理:若l原创 2016-01-24 21:57:38 · 432 阅读 · 0 评论 -
Kosaraju算法 有向图的强连通分量
有向图的强连通分量即,在有向图G中,如果两个顶点间至少存在一条路径,称两个顶点强连通(strongly connected)。如果有向图G的每两个顶点都强连通,称G是一个强连通图。非强连通图有向图的极大强连通子图,称为强连通分量(strongly connected components)。采用的算法是Kosaraju算法。原创 2016-01-18 19:15:58 · 913 阅读 · 0 评论 -
tarjan算法
先再明确几个概念: 强连通图:强连通图。在一个强连通图中,任意两个点都通过一定路径互相连通。比如图一是一个强连通图,而图二不是。因为没有一条路使得点4到达点1、2或3。 强连通分量:在一个非强连通图中极大的强连通子图就是该图的强连通分量。比如图三中子图{1,2,3,5}是一个强连通分量,子图{4}是一个强连通分量。 (图片来自其他博客) tarjan算法的实现: tar t原创 2016-01-22 21:11:06 · 1805 阅读 · 0 评论 -
POJ 3436 ACM Computer Factory (网络流)
题目题意: 生产线是全自动化的,所以需要机器来组成生产线,给定有多少中种机器,标准ACM用电脑有多少部份,每种机器将什么样的ACM电脑半成品处理成什么样的电脑半成品(对于输入的电脑半成品,每部分有0,1,2三种状态:代表着 0、这部分必须没有我才能处理,1、这部分必须有我才能处理,2、这部分有没有我都能处理。对于输出的电脑半成品有0,1两种状态:代表着0,处理完后的电脑半成品里没有这部分,原创 2016-09-08 21:31:40 · 215 阅读 · 0 评论