随笔分类 - 

摘要:d.一颗树,选最少的点覆盖所有边 s. 1.可以转成二分图的最小点覆盖来做。不过转换后要把匹配数除以2,这个待细看。 2.也可以用树形dp c.匈牙利算法(邻接表,用vector实现): /* 用STL中的vector建立邻接表实现匈牙利算法 效率比较高 处理点比较多的效率很高。1500的点都没有问 阅读全文
posted @ 2016-03-14 16:27 gongpixin 阅读(309) 评论(0) 推荐(0) 编辑
摘要:d.各学校之间有单向的网络,每个学校得到一套软件后,可以通过单向网络向周边的学校传输,问题1:初始至少需要向多少个学校发放软件,使得网络内所有的学校最终都能得到软件。问题2:至少需要添加几条传输线路(边),使任意向一个学校发放软件后,经过若干次传送,网络内所有的学校最终都能得到软件。s.首先找强连通... 阅读全文
posted @ 2015-12-04 21:03 gongpixin 阅读(316) 评论(0) 推荐(0) 编辑
摘要:d.看一个图是不是强连通图s.求出强连通分量,看看有没有一个强连通分量包含所有点。c.Tarjan/*Tarjan算法复杂度O(N+M)*/#include#include#includeusing namespace std;const int MAXN=10010;//点数const int M... 阅读全文
posted @ 2015-12-04 18:47 gongpixin 阅读(295) 评论(0) 推荐(0) 编辑
摘要:d.n个村庄,n*(n-1)/2条路,建立一些路使所有村庄可达。求建立路这些路的最小花费。 s.最小生成树 c.Prim算法:cost[a][b]和cost[b][a]都得赋值。 /* Prim算法 Prim求MST 耗费矩阵cost[][],标号从0开始,0~n-1 返回最小生成树的权值,返回-1 阅读全文
posted @ 2015-12-04 17:19 gongpixin 阅读(272) 评论(0) 推荐(0) 编辑
摘要:d.c个小岛,通过建立桥,使其全部可达。求所有的桥的最小长度和。 s.最小生成树,数据改成double就行了 c.Prim算法:cost[a][b]和cost[b][a]都得赋值。 /* Prim算法 Prim求MST 耗费矩阵cost[][],标号从0开始,0~n-1 返回最小生成树的权值,返回- 阅读全文
posted @ 2015-12-04 17:08 gongpixin 阅读(253) 评论(0) 推荐(0) 编辑
摘要:d.已知起点和终点,请你计算出要从起点到终点,最短需要行走多少距离。 s.最短路径 c.Dijkstra单源最短路 /* Dijkstra单源最短路 权值必须是非负 单源最短路径,Dijkstra算法,邻接矩阵形式,复杂度为O(n^2) 求出源beg到所有点的最短路径,传入图的顶点数,和邻接矩阵co 阅读全文
posted @ 2015-12-03 21:40 gongpixin 阅读(184) 评论(0) 推荐(0) 编辑
摘要:d.m个村庄,n条路,计算出所有村庄畅通需要的最低成本。 s.最小生成树 c.Prim算法:cost[a][b]和cost[b][a]都得赋值。 /* Prim算法 Prim求MST 耗费矩阵cost[][],标号从0开始,0~n-1 返回最小生成树的权值,返回-1表示原图不连通 */ #inclu 阅读全文
posted @ 2015-12-03 21:22 gongpixin 阅读(225) 评论(0) 推荐(0) 编辑
摘要:d.n个村庄,n*(n-1)/2条路,铺设若干条路,使任何两个村庄都可达。求最小的公路总长度。 s.最小生成树 c.Prim算法:cost[a][b]和cost[b][a]都得赋值。 /* Prim算法 Prim求MST 耗费矩阵cost[][],标号从0开始,0~n-1 返回最小生成树的权值,返回 阅读全文
posted @ 2015-12-03 20:56 gongpixin 阅读(257) 评论(0) 推荐(0) 编辑
摘要:d.每组的第一行是三个整数T,S和D,表示有T条路,和草儿家相邻的城市的有S个(草儿家到这个城市的距离设为0),草儿想去的地方有D个; 求D个城市中距离草儿家最近的距离。 s.进行1次单源最短路,找出距离最小的即可。 c.Dijkstra单源最短路 /* Dijkstra单源最短路 权值必须是非负 阅读全文
posted @ 2015-12-03 17:02 gongpixin 阅读(374) 评论(0) 推荐(0) 编辑
摘要:1、给定一个连通的无向图G,至少要添加几条边,才能使其变为双连通图。2、POJ - 3177 Redundant Paths(边双连通分支)(模板) 与这道题一模一样。代码就改了下范围,其他都没动。。。3、//边双连通分支/*去掉桥,其余的连通分支就是边双连通分支了。一个有桥的连通图要变成边双连通图... 阅读全文
posted @ 2015-11-28 21:18 gongpixin 阅读(302) 评论(0) 推荐(0) 编辑
摘要:1、给定一个连通的无向图G,至少要添加几条边,才能使其变为双连通图。2、3、//边双连通分支/*去掉桥,其余的连通分支就是边双连通分支了。一个有桥的连通图要变成边双连通图的话,把双连通子图收缩为一个点,形成一颗树。需要加的边为(leaf+1)/2(leaf为叶子结点的个数)POJ 3177 给定一个... 阅读全文
posted @ 2015-11-28 21:09 gongpixin 阅读(578) 评论(0) 推荐(0) 编辑
摘要:1、这道题学了个单词,product 还有 乘积 的意思。。 题意就是在一个 m*n的矩阵中,放入L个敌军的伞兵,而我军要在伞兵落地的瞬间将其消灭。现在我军用一种激光枪组建一个防御系统,这种枪可以安装在一行(或者一列),并且安装在不同行(或者不同列)的费用是不一样的,枪的攻击范围是一行(或者一列)。 阅读全文
posted @ 2015-11-28 13:54 gongpixin 阅读(240) 评论(0) 推荐(0) 编辑
摘要:1、N*M的矩阵中,有k个人和k个房子,每个人分别进入一个房子中,求所有人移动的最小距离。 2、人看成源点,房子看成汇点,求最小费用最大流。 建图-- 人指向房子,容量为1,费用为人到房子的曼哈顿距离。 建立超级源点和超级汇点:超级源点指向人,容量为1,费用为0;房子指向超级汇点,容量为1,费用为0 阅读全文
posted @ 2015-11-25 21:05 gongpixin 阅读(328) 评论(0) 推荐(0) 编辑
摘要:1、K种物品,M个供应商,N个收购商。每种物品从一个供应商运送到一个收购商有一个单位运费。每个收购商都需要K种物品中的若干。求满足所有收购商需求的前提下的最小运费。 2、K种物品拆开来,分别对每种物品进行最小费用最大流计算。 建立超级源点和超级汇点:超级源点流向M个供应商,容量为供应商的存储量,费用 阅读全文
posted @ 2015-11-25 18:38 gongpixin 阅读(302) 评论(0) 推荐(0) 编辑
摘要:1、看了好久,囧。 n个节点,np个源点,nc个汇点,m条边(对应代码中即节点u 到节点v 的最大流量为z) 求所有汇点的最大流。 2、多个源点,多个汇点的最大流。 建立一个超级源点、一个超级汇点,然后求超级源点到超级汇点的最大流即可。 3、 1、SAP邻接矩阵形式: /* SAP算法(矩阵形式) 阅读全文
posted @ 2015-11-22 20:47 gongpixin 阅读(296) 评论(0) 推荐(0) 编辑
摘要:1、一个有向无环图(DAG),M个点,K条有向边,求DAG的最小路径覆盖数 2、DAG的最小路径覆盖数=DAG图中的节点数-相应二分图中的最大匹配数 3、 /* 顶点编号从0开始的 邻接矩阵(匈牙利算法) 二分图匹配(匈牙利算法的DFS实现)(邻接矩阵形式) 初始化:g[][]两边顶点的划分情况 建 阅读全文
posted @ 2015-11-19 18:03 gongpixin 阅读(253) 评论(0) 推荐(0) 编辑
摘要:1、有一个n*n的矩阵,在矩阵上有k个行星,用武器射击一次可以消灭一行或者一列的行星,求消灭所有的行星的最少射击次数。 2、最小点覆盖数 = 最大匹配数 主要在于转化:看图: 这样,在建成的二分图中,一条边代表一个行星,左边的一个点代表横向射击,右边的一个点代表竖向射击。 要求最少的射击次数把所有的 阅读全文
posted @ 2015-11-19 17:07 gongpixin 阅读(838) 评论(0) 推荐(0) 编辑
摘要:1、有两台机器A和B以及N个需要运行的任务。A机器有n种不同的模式,B机器有m种不同的模式,而每个任务都恰好在一台机器上运行。如果它在机器A上运行,则机器A需要设置为模式xi,如果它在机器B上运行,则机器B需要设置为模式yi。每台机器上的任务可以按照任意顺序执行,但是每台机器每转换一次模式需要重启一 阅读全文
posted @ 2015-11-19 16:16 gongpixin 阅读(219) 评论(0) 推荐(0) 编辑
摘要:1、男生女生一起坐过山车,每一排有两个座位,但是有个条件,就是每个女生必须找个男生做同伴一起(但是女生只愿意和某几个男生中的一个做同伴),求最多可以有多少对男女生组合坐上过山车。 2、二分图的最大匹配,女生作为X集合(左边),男生作为Y集合(右边) 3、 3.1匈牙利算法(邻接矩阵): /* 顶点编 阅读全文
posted @ 2015-11-19 14:00 gongpixin 阅读(319) 评论(0) 推荐(0) 编辑
摘要:1、一颗树中,给出a,b,求最近的距离。(我没考虑不联通的情况,即不是一颗树的情况) 2、用最近公共祖先来求, 记下根结点到任意一点的距离dis[],这样ans = dis[u] + dis[v] - 2 * dis[lca(u, v)] 3、 /* 离线算法,LCATarjan 复杂度O(n+Q) 阅读全文
posted @ 2015-11-14 00:04 gongpixin 阅读(271) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示