随笔分类 -  图论

最短路, 拓扑排序,最小生成树,tarjian, 二分图匹配
摘要:题目传送门题意:列车上行驶40, 其余走路速度10.问从家到学校的最短时间分析:关键是建图:相邻站点的速度是40,否则都可以走路10的速度.读入数据也很变态.#include #include #include #include #include using namespace std;const ... 阅读全文
posted @ 2015-11-30 21:30 Running_Time 阅读(213) 评论(0) 推荐(0)
摘要:题目传送门题意: m组关系,A能打败B,问最后有几头牛的排名能确定分析:如果排名确定,那么能打败它的到它一定通,它到能打败的一定能通,也就是和为n-1.用Floyd的传递闭包#include #include #include using namespace std;const int N = 1e... 阅读全文
posted @ 2015-11-30 21:26 Running_Time 阅读(161) 评论(0) 推荐(0)
摘要:题目传送门 1 2题意:有向图,所有点先走到x点,在从x点返回,问其中最大的某点最短路程分析:对图正反都跑一次最短路,开两个数组记录x到其余点的距离,这样就能求出来的最短路以及回去的最短路.POJ 3268//#include #include #include #include #include ... 阅读全文
posted @ 2015-11-27 20:00 Running_Time 阅读(305) 评论(0) 推荐(0)
摘要:题目传送门题意:求1到n的最大载重量分析:那么就是最大路上的最小的边权值,改变优先规则.#include #include #include #include using namespace std;typedef long long ll;const int N = 1e3 + 10;const ... 阅读全文
posted @ 2015-11-27 17:06 Running_Time 阅读(228) 评论(0) 推荐(0)
摘要:题目传送门排行榜一个人做了12年北大出的题,自己还是太弱了,图论的知识忘光光,最小生成树裸题写不来,Dijkstra TLE不知道用SPFA。简单几何(点到线段的距离) + 三分B Stealing a Cake题意:圆外一个点先到圆再到矩形的最短距离。分析:由于圆在[0, PI]和[PI, PI*... 阅读全文
posted @ 2015-11-07 18:26 Running_Time 阅读(183) 评论(0) 推荐(0)
摘要:题目传送门题意:给出n个三维空间的球体,球体是以圆心坐标+半径来表示的,要求在球面上建桥使所有的球联通,求联通所建桥的最小长度。分析:若两点距离大于两半径和的长度,那么距离就是两点距离 - 半径和,否则为0,Prim写错了,算法没有完全理解/*****************************... 阅读全文
posted @ 2015-10-25 14:03 Running_Time 阅读(209) 评论(0) 推荐(0)
摘要:题目传送门题意:从(0, 5)走到(10, 5),中间有一些门,走的路是直线,问最短的距离分析:关键是建图,可以保存所有的点,两点连通的条件是线段和中间的线段都不相交,建立有向图,然后用Dijkstra跑最短路。好题!/****************************************... 阅读全文
posted @ 2015-10-24 10:44 Running_Time 阅读(363) 评论(0) 推荐(0)
摘要:题目传送门题意:先给一棵树,然后有一条额外的边,问u走到v从现在最短的路走和原来不加边走的路节省了多少距离分析:首先跑不加边的树的LCA,这样能求出任意两点的距离,那么现在x和y多连了一条边,如果能节省路程那一定是走了xy这条边,那么暴力枚举组合,比如求u到v,新边xy,ans = min (ans... 阅读全文
posted @ 2015-10-08 17:15 Running_Time 阅读(197) 评论(0) 推荐(0)
摘要:题目传送门题意:一棵有向的树,问u到v是否可达分析:假设是无向树,DFS时正向的权值+1,反向的权值-1,然后找到LCA后判断dep数组和d数组就可以了/************************************************* Author :Running_... 阅读全文
posted @ 2015-10-06 17:13 Running_Time 阅读(335) 评论(0) 推荐(0)
摘要:题目传送门题意:两种操作,问u到v的距离,并且u走到了v;把第i条边距离改成w分析:根据DFS访问顺序,将树处理成链状的,那么回边处理成负权值,那么LCA加上BIT能够知道u到v的距离,BIT存储每条边的信息,这样第二种操作也能用BIT快速解决利用RMQ的写法不知哪里写挫了,改用倍增法/******... 阅读全文
posted @ 2015-10-06 16:45 Running_Time 阅读(231) 评论(0) 推荐(0)
摘要:先上模板~/* LCA(倍增法,二分搜索):rt[i][u](i> i & 1) { u = rt[i][u]; } } if (u == v) return u; for (int i=D-1; i>=0; --i) { ... 阅读全文
posted @ 2015-10-06 16:28 Running_Time 阅读(224) 评论(0) 推荐(0)
摘要:题目传送门题意:给出一条链,比如x连到y,x一定要在y的左边,且代价是这条链经过的点的权值和,问如何排序使得代价最小分析:类似拓扑排序,先把入度为0的点入队,把指向该点的所有点按照权值排序,保证这样是代价是最小的,然后把这一块看成一个点继续入队。看图更简单:/********************... 阅读全文
posted @ 2015-10-03 14:42 Running_Time 阅读(283) 评论(0) 推荐(0)
摘要:题目传送门题意:判断是否为哈密顿图分析:首先一种情况是不合法的:也就是度数为1的点超过2个;合法的有:,那么从度数为1的点开始深搜,如果存在一种走法能够走完n个点那么存在哈密顿路收获:学习资料代码:/************************************************* ... 阅读全文
posted @ 2015-09-05 16:39 Running_Time 阅读(243) 评论(0) 推荐(0)
摘要:1. Kruskal(并查集模板):/* Kruskal:并查集实现,记录两点和距离,按距离升序排序,O (ElogE)*/struct Edge { int u, v, w; bool operator w[u][i]) { d[i] = w[u][i]; } } } return ... 阅读全文
posted @ 2015-09-04 14:53 Running_Time 阅读(268) 评论(0) 推荐(0)
摘要:题目传送门题意:n个人发糖果,B 比 A 多 C的糖果,问最后第n个人比第一个人多多少的糖果分析:最短路,Dijkstra 优先队列优化可过,SPFA竟然要用栈,队列超时!代码:/************************************************* Author ... 阅读全文
posted @ 2015-09-01 20:15 Running_Time 阅读(232) 评论(0) 推荐(0)
摘要:题目传送门题意:找一棵树使得造价最少,造价为每个点的子节点造价和*边的造价和分析:最短路跑出1根节点到每个点的最短边权值,然后每个点的权值*最短边距和就是答案,注意INF开足够大,n#include #include #include #include #include using namespac... 阅读全文
posted @ 2015-09-01 19:04 Running_Time 阅读(206) 评论(0) 推荐(0)
摘要:题目传送门题意:判三角恋(三元环)。如果A喜欢B,那么B一定不喜欢A,任意两人一定有关系连接分析:正解应该是拓扑排序判环,如果有环,一定是三元环,证明。DFS:从任意一点开始搜索,搜索过的点标记,否则超时。看是否存在两点路程只差等于2,如果存在,则说明有上述的三角环。其他做法。收获:DFS搜索一定要... 阅读全文
posted @ 2015-08-25 20:10 Running_Time 阅读(321) 评论(0) 推荐(0)
摘要:题目传送门题意:如何花最小的代价使得一棵树划分开且不含同类节点分析:当一条边连接的左右集合同类点小于等于1,那么不用删除,将两个集合合并,要求最小代价,那么贪心思想将权值降序排序,删除后剩下的就是最小值了。树形DP的方法以后再补上收获:进一步理解Kruskal的算法过程,碰到新的问题要往经典的算法模... 阅读全文
posted @ 2015-08-24 16:08 Running_Time 阅读(175) 评论(0) 推荐(0)
摘要:题目传送门题意:起点s到终点t送电,中途会有损耗,问最小损耗是多少分析:可以转换为单源最短路问题,用优先队列的Dijkstra版本,d[]表示从s出发到当前点的最小损耗,用res保存剩下的电量。当到达t就结束,因为按照w从小到大排序,访问过的点都已经最优,这是贪心思想收获:复习了Dijkstra,进... 阅读全文
posted @ 2015-08-24 14:48 Running_Time 阅读(255) 评论(0) 推荐(0)
摘要:题目传送门题意:有中文版的分析:(出题人的解题报告)我们首先需要预处理出任意两个国家之间的最短距离,因为数据范围很小,所以直接用Floyd就行了。之后,我们用f[S][i]表示访问国家的情况为S,当前最后访问的一个国家是i所需要的最小总油量,其中,S的二进制表示记录了访问国家的情况,S在二进制表示下... 阅读全文
posted @ 2015-08-22 22:21 Running_Time 阅读(251) 评论(0) 推荐(0)