模板
文章平均质量分 52
yanga11ang
an ACMer,team: Echo
展开
-
Minimum Cut POJ - 2914 无向图最小割,stoer_wagner算法
无向图最小割,stoer_wagner算法题意: 给一副无向图,求一组最小割集,将图分成两份 题解 某算法刚好可解决 stoer_wagner算法 算法流程: 1.min=MAXINT,固定一个顶点P 2.从点P用类似prim的算法扩展出“最大生成树”,记录最后扩展的顶点和最后扩展的边 3.计算最后扩展到的顶点的切割值(即与此顶点相连的所有边权和),若比min小更新min 4.合原创 2017-10-17 17:55:08 · 276 阅读 · 0 评论 -
Popular Cows POJ - 2186 找金字塔顶点?
有向图中所有点都能到达的点题意 题目大概是有好多牛,牛(们)之间具有某种关系(鬼知道),这种关系具有传递性,如果有 A欢迎B和B欢迎C,那么就有A欢迎C。我们要找到能让其他所有的牛都欢迎的牛。 思路 画图易知 如果强联通分量中有多个缩点,出度为零,要么不成联通,要么联通也不能被所有牛崇拜,故而本题求的是唯一的一个出度为零的连通分量的规模 Ps:对于入度没有要求(画蛇添足必须死) 代码/*原创 2017-10-15 19:18:31 · 221 阅读 · 0 评论 -
Network of Schools POJ - 1236 tarjan强连通分量
tarjan强连通分量题意: N(2<N<100)各学校之间有单向的网络,每个学校得到一套软件后,可以通过单向网络向周边的学校传输,问题1:初始至少需要向多少个学校发放软件,使得网络内所有的学校最终都能得到软件。2,至少需要添加几条传输线路(边),使任意向一个学校发放软件后,经过若干次传送,网络内所有的学校最终都能得到软件。 思路 也就是: — 给定一个有向图,求: 1) 至原创 2017-10-15 16:16:57 · 260 阅读 · 0 评论 -
Frogs' Neighborhood POJ - 1659 havel定理
havel定理:判断度数序列是否可图(简单图)题意 未名湖附近共有N个大小湖泊L1, L2, …, Ln(其中包括未名湖),每个湖泊Li里住着一只青蛙Fi(1 ≤i ≤ N)。如果湖泊Li和Lj之间有水路相连(无向图),则青蛙Fi和Fj互称为邻居。现在已知每只青蛙的邻居数目x1,x2, …, xn,请你给出每两个湖泊之间的相连关系。 思路 直接贪心是有误的:1 2 3 2 0 用 havel原创 2017-10-15 17:41:59 · 247 阅读 · 0 评论 -
Command Network POJ - 3164 有向图的最小生成树(最小树形图朱刘算法)
有向图的最小生成树(最小树形图朱刘算法)题意 给你N个点的坐标和M条有向边,问你以点1为根的最小树形图的边权之和。思路 套用朱-刘算法 求解最小树形图即可 复杂度O(EV)设根结点为v0,(1)求最短弧集合E0 从所有以vi(i ≠ 0)为终点的弧中取一条最短的,若对于点i,没有入边,则不存在最小树形图,算法结束;如果能取,则得到由n个点和n-1条边组成的图G的一个子图G’,这个子图的权值一原创 2017-10-14 14:25:11 · 380 阅读 · 0 评论 -
四边形不等式优化dp
关于四边形不等式优化dp的一点理解 我其实应该先学好几何证明 orz 前导算法 区间dp 基础几何证明算法干嘛 当区间dp 代价函数满足fun(i,j)+fun(i',j')<fun(i',j)+fun(i,j')时 通过减少 类区间dp 的决策区间,将其O(n^3) 的复杂度化为O(n^2)算法思路 区间合并时候,如果代价函数满足fun(i,j)+fun(i',j')<fun(i',j)原创 2017-07-23 11:15:43 · 372 阅读 · 0 评论 -
最小费用最大流minCostMaxflow 模板
/* * Author : Echo * Email : 1666424499@qq.com * Description : * Created Time : 2017/9/25 16:52:26 * Last Modify : 2017/10/3 9:39:47 * File Name : MinCostMaxflow.cpp原创 2017-10-05 09:54:38 · 4300 阅读 · 0 评论 -
SPFA模板
/* * Author : Echo * Email : 1666424499@qq.com * Description : SPFA * Created Time : 2017/8/29 15:52:11 * Last Modify : 2017/8/29 18:48:09 * File Name : SPFA.cpp */#i原创 2017-10-05 10:48:18 · 291 阅读 · 0 评论 -
Sightseeing Cows POJ - 3621 环点权与边权和之比最大
大致题意: 给出一个有向图,每个点都有一个点权,每条有向边也都有一个边权,要求出一个环使得环中点权之和与边权之和的比值最大。 思路: 如果将环上的边和点一一绑定,E(u,v)=k(e(u,v))-value[u],这样就变成选取一个合适的k; 考虑k_max是答案,然后发现k >k_max不可能有负环,而k/* * Author : Echo * Email原创 2017-10-06 20:59:32 · 685 阅读 · 0 评论 -
Cow Relays POJ - 3613 邻接矩阵的简单用法
本题的大意就是问从S 到 T 经过边得个数恰为k的最短路是多少。如果学过离散数学 就应该知道 邻接矩阵A A^1里的元素a[i][j] 代表i到j的走一步一条路; A^2里的元素a[i][j] 代表i到j的走两步一条路 ; A^n里的元素a[i][j] 代表i到j的走N步一条路 ; 然后再矩阵快速幂一下就好代码如下/* * Author : Echo * Email原创 2017-10-06 19:11:17 · 280 阅读 · 0 评论 -
Full Tank? POJ - 3635 二维最短路(dp?)
题目: n个城市之间有m条双向路。每条路要耗费一定的油量。每个城市的油价是固定并且已经给出的。有q个询问,表示从城市s走到e,油箱的容量为c,求最便宜的方案。 思路: 可以分层图最短路,有点类似DP的思想 按油量分层,dis[i][j]表示到节点i还有j个油的最小花费(不是最短路) 两种决策,加一个油或者直接走 需要比较好的剪枝,不然会超时,可以离线,每次不用更新所有可能的油量,更新比原创 2017-10-07 18:12:17 · 313 阅读 · 0 评论 -
dinic 最大流模板
/* * Author : Echo * Email : 1666424499@qq.com * Description : dinic 算法模板 * Created Time : 2017/8/30 10:05:30 * Last Modify : 2017/9/25 15:55:30 * File Name : C:\Use原创 2017-10-08 15:15:55 · 221 阅读 · 0 评论 -
Picnic Planning POJ - 1639 限制顶点度数的MST
题意:有n个兄弟去野餐,目的地为Park。每个人可以选择直接去Park,也可以选择去其他人家,和他一起坐车去Park。每个人家的停车位没有限制,但是Park的停车数不能超过k。问所有人的最短路程。思路 上手可能觉得题目很难,但是分解一下就会发现很简单. ①根节点的度有限制的生成树或许不好写,但度最小的生成树却很简单. ②有一种方法可以 将根节点度为i的最小生成树变成成i+1的MST 方法如下原创 2017-10-09 17:00:24 · 322 阅读 · 0 评论 -
The Unique MST POJ - 1679 判断最小生成树是否唯一 prim算法
题目大意:给你一个有权值的无向图,判断最小生成树是否唯一。思路 首先,使用prim算法为基础求MST, 其次,在此基础上加入数组dp[i][j],用于记录i到j路径上的权值最大的边。 最后,看没有添加的边是否能替换,如果添加形成环路的第二大边。(也可以求次最小生成树)。代码如下/* * Author : Echo * Email : 1666424499@qq原创 2017-10-10 12:07:04 · 838 阅读 · 0 评论 -
Desert King POJ - 2728 (最优比率生成树) 二分
题意: 在这么一个图中求一棵生成树,这棵树的单位长度的花费最小是多少? 思路 题目可以写成如下公式:其中E指的是 生成树中的边 R=sigma(a[i]*x[i])/sigma(b[i]*x[i])我们先定义一个函数F(L):=sigma(a[i]*x[i])-L*sigma(b[i]*x[i]),显然这只是对目标式的一个简单的变形。分离参数,得到F(L):=sigma((a[i]-L*b[原创 2017-10-12 20:48:53 · 335 阅读 · 0 评论 -
(初识)斜率dp
关于斜率dp的一点理解 我其实应该先学好几何 orz 前导算法 基础dp 单调队列 数形结合思想算法干嘛 是动态规划问题中的一种优化方案, 当满足 时可以利用斜率优化,变化O(n)为O(1)算法思路 本算法是一种数形结合的优化方法, 可以考虑为 随着i增加 i的待考查区间增大。 如果满足上述斜率等式 , 易发现,待考察区间有许多无用值 将之去掉,待考察区间 可能变为斜率递增的单调原创 2017-07-21 19:58:16 · 246 阅读 · 0 评论 -
Remmarguts' Date POJ - 2449 第k短路 SPFA+A*
这是一道巧妙利用了A*算法的一道题A*算法比较开心的地方是在算出最短路的时候,继续算下去会得到次最短路,继续下去是次次最短路,….所有可能的路.在A*算法中 F(x)=G(x)+H(x) 其中G(x) 表示到x后已经走了的距离 H(x) 表示到x后再到终点估计要走多少(本题可以精确算出用SPFA) F(x) 即是走这条路到达的期望距离一个比较给力的剪枝 每个点访问k次就好了,多余的并没有对答原创 2017-10-05 20:38:00 · 339 阅读 · 0 评论 -
Sightseeing POJ - 3463 求最短路和次短路
题意: 给出一个n点m边的有向图,求s到t的最短路和长度为最短路+1的路的种类数; n<=1000,m<=10000; 思路: 1.dijkstra 更新距离时,多加一个坑,放置次短距离. 2.因为多了一个坑,枚举最小值时,多了一倍需要枚举 3.更新距离时,要按照一定的顺序 以免重复更新代码如下/* * Author : Echo * Email : 1原创 2017-10-06 15:36:19 · 320 阅读 · 0 评论 -
Going from u to v or from v to u? POJ - 2762 是否为单向连通图
判断单向连通图 tarjan题意 给你一个有向图,问任意两点u,v 是否总存在V(u,v) 或 V(v,u) 思路 用tarjan算法将强联通分量缩点 判断生成树(不成树肯定错)是否退化成链 随便深搜一下最长链就好 Ps:这题数据水了 hack数据: 1 4 4 1 2 1 3 2 4 3 4 代码/* * Author : Echo * Email原创 2017-10-16 17:08:28 · 283 阅读 · 0 评论