![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
图论
文章平均质量分 78
huyuncong
这个作者很懒,什么都没留下…
展开
-
【floyd】JAG Spring 2013 Revenge of Minimum Cost Flow aizu 2561
题意:求s到t的流量为f的最小费用流,每条边的费用是一个分段函数,当流量小于等于D[i]时,为A[i]*flow,超过时为A[i]*D[i]+B[i]*(flow-D[i]),最多只有一条边的A[i]一开始听叉姐提到了这个题,觉得很有趣,然后估摸着接下来也不会训这套题,于是就从官网下数据把这道题过了...虽然说是费用流,但是其实是没有容量限制的,因此比费用流的限制要宽松很多,然后假如没有A原创 2013-11-21 17:53:21 · 1039 阅读 · 0 评论 -
ceoi 2011 treasure hunt
wc上第一次听这个题就感觉很有想法,于是想了个倍增,只能过50分,后来周而进讲了分块存图的方法,可惜只能用动态树维护,经ATM启发,每次分块后都不裂块,以适应倍增的树形态不变的性质,也就是后来钟沛林讲的方法,实现起来还比较容易,只是细节难以处理。每个块我只存块状树深度,左右端点,每要处理一个点,二分其所处的块,倍增存2^k步的块,2^k步的点,2^k到块顶的距离,然后各种特判维护实际距离。原创 2012-02-13 11:39:32 · 981 阅读 · 0 评论 -
一道生成树问题 poj2831
题目大意:给张图,然后问你,如果某边的权值下降为V,那么这个边有无可能在最小生成树中呢?节点数≤1000,边数≤100000,询问数≤100000。由于网上唯一的标程是java,所以讲一下这道题。可知,最小生成树上两点间路径上最大边为这两点间所有路径中路径上最大边原创 2011-10-04 20:51:57 · 883 阅读 · 0 评论 -
【消圈】poj2175
poj2175只用到了一次找负圈,因此比较快,如果一直找下去,效率应该很低首先是用拓展km直接做——375ms#include #include #include #include #include const int oo=1073741819;using namespace std;int x[500],y[500],p[500],q[500];int a[500]原创 2013-11-12 17:15:47 · 828 阅读 · 0 评论 -
【字典序最小最大权独立集】uva12288
题意:在n*m的网格上填马,其攻击范围是±3,±1这种类型,每个格子有个权值,有些格子可以选,有些不能选,求一种字典序最小的,马互不攻击的,权值之和最大的一种方案明显按行奇偶染色,就变成了二分图上的最大权独立集的问题,这个是个经典模型,然后考虑怎么输方案,按字典序枚举每个位置,如果想让这个位置必须选,那么就是它连向源或汇的边变为oo,使得最小割割不开,则判断其合法性就是看有没有一条到汇(源)点原创 2013-11-24 21:46:26 · 922 阅读 · 0 评论 -
【互补松弛定理】12.7.16省队集训
互补松弛定理sigma(aij*yi | i=1~m)==cj or xi=0 j=1,2...,nsigma(aij*xj | j=1~n)==bi or yi=0 i=1,2...m题意:给一个n*n的矩阵,每次可以攻击一列或者一行,攻击一行的代价为Ai,攻击一列的代价为Bi,要求每个格子i,j至少被攻击F[i][j]次,要使得总代价最小,同时输出方案第一次接触对偶定理就是原创 2013-10-24 00:04:12 · 3199 阅读 · 0 评论 -
【边最大匹配判定】2013changsha网络赛i题
涛哥讲过这种题有木有...还出了丘比特的烦恼有木有...结果我还是没过有木有T T首先对于一个完备匹配的图来说,不存在非匹配的点,因此将匹配边指向Y集,非匹配边指向X集,那么,在同一个强联通分量中的边势必是可以互相替换的。但这道题就坑在他不是一个完备匹配,有非匹配的点,那么只求强联通分量是不够的,我最后半个小时才发现这个问题,结果也没时间打补丁,而且我们想的打补丁的方法也很丑,bfs两遍看原创 2013-09-23 18:22:50 · 906 阅读 · 0 评论 -
【拓展km】hdu4744
之前说过hdu4744的正解不是费用流,其实是说不是那种纯暴力的没有针对图的性质进行的费用流...我们知道km做最优匹配的时候是每次在相等子图上做最大匹配,如果找不到相等子图则修改顶标以扩大相等子图,那么这道题可以看出其实是一个增广多次的km,也就是说每次找到一个相等子图就做一次流量增广,同时由于一条边可以选多次,那么相等子图也会有很多个,于是修改算法就出来了,每次找一个相等子图,找到一个便进原创 2013-10-04 17:38:26 · 1153 阅读 · 5 评论 -
【二分图上的构造】codeforces173D
好久没这么深入地分析一道图论题了,感觉酣畅淋漓,虽然考场上花的时间比较久,但是好在分析得十分透彻,直接一Y了考虑如果尽量把一种颜色分在同一边,那么肯定是合法的,如果说两边点数模2都余0,那就皆大欢喜了;唯一特殊的情况是一边多一个点,一边多2个点,由于所有颜色都是等价的,因此只需一边找一个点,另一边找两个与他不相邻的两个点即可满足要求,这个根据度数可以轻松判出;如果不存在这种情况的话,假设x部是原创 2013-07-26 19:58:24 · 727 阅读 · 0 评论 -
【图论】bfs树与dfs树的两个妙用
对于一张无向图原创 2013-07-26 19:36:18 · 2789 阅读 · 0 评论 -
【流量平衡】hdu3947
虽然是志愿者招募的变形,但是也有一定的新意给出一棵内向树,每条边有一定的权值,目标是所有的边权小于等于0,给出若干操作ui,vi,li,ci,表示将ui到vi的路径上的边减1的权值需要ci的费用,该操作共可执行li次。一开始被叉姐的讲解误导,用一种类似点事件的思想,每种操作看做在某个点+1的标记和某个点-1的标记,这个思想或许在志愿者招募适用,但在树上有分叉,就不太可行了(或许是我理解错了原创 2013-07-14 20:06:31 · 1073 阅读 · 1 评论 -
【dominator tree】 Lengauer-Tarjan algorithm
题意:给定源点,求出源点到其他各点的关键点 Lengauer-Tarjan algorithm按理说这也是个经典算法,跟lca的tarjan和强连通的tarjan都有极其相似之处,但是貌似并没有推广感觉出题比较好出,先求个dominator tree,然后再在上面各种搞,虽然多半会出成一个拼接题...首先有几个链接一些概念http://en.wikipedia.org/原创 2013-11-14 16:13:49 · 3074 阅读 · 0 评论 -
【对偶定理】aizu2230
上学期写的一篇解题报告,还是传上来备份一下...算法:单纯形or对偶定理化为最小费用流对偶定理:max{cx | Ax≦b, x≧0}min{yb | yA≧c, y≧0}原题大意:给出一个n个点m条边的有向拓扑正权图,使得每个点都至少被一条由1到n的路径经过,现要求尽可能增加边权,使得由1到n的最长路不会增大。 抽象模型——>线性规划设修改图后1到i的最长距离原创 2014-03-17 10:26:22 · 1358 阅读 · 0 评论 -
tarjan求割点 poj 1144
tarjan可真是多才多艺,既求强连通,又求割点割边,还求lca,居然每一种都相差不多。求割点主要是利用dfs遍历树(李顶龙童鞋一直不理解tarjan,从dfs树应该比较直观)。rel[x]记录x实际在树中深度,low[x]记录x及其子树在树中回边可到达的最浅深度。如果u是割点,那么在dfs树中1、u为根,u有一个以上子树(删除u后显然两子树不连通)。2、u非叶子(易知叶子无关紧要),且low[u的孩子]>=rel[u](即该子树无法不通过u到达u的祖先)下面是代码(跑不到0ms)var time,ans,原创 2011-05-12 22:26:00 · 2048 阅读 · 2 评论 -
km算法+slack优化 poj3565
km算法在百度上讲的很清楚讲一些针对这道题的有n只蚂蚁要吃n个苹果,求总路径和最小,且不交叉的方案网上有很多人说是计算几何题其实,研究一下题意可以得出很重要的性质————最优方案一定不交叉。根据三角形不等式adad+bc因此,我们只需要构造二分图,求最小权和匹配将所有蚂蚁看做一个集合,所有苹果看做一个集合,求出各蚂蚁到各苹果的距离并取反,在这个二分图上用km算法容易发现这个模型是完全二分图,因此,加上slack优化可以快很多(在其他情况下slack优化一般只优化常数)。这道题的相等判断要注意精度,否则会死循原创 2011-04-16 12:58:00 · 3232 阅读 · 4 评论 -
【除草】一些题目
hdu4304一段n*n的墙,用一个刷子来刷,要求刷子的第一根毛在第一个原创 2014-07-08 15:23:22 · 1259 阅读 · 0 评论 -
【二分图匹配判定+线段树建边】pku1057
首先行列是可以分开考虑的,相两个排列原创 2014-08-15 21:16:21 · 894 阅读 · 0 评论 -
【除草】一些稍难题
hdu4623通过打表发现很多数字在考虑互质的情况是dengjia原创 2014-07-13 14:16:11 · 851 阅读 · 0 评论 -
【hdu3238】Finding the Most Vital Node of a Shortest Path
题意:给定s,t,求出无向图上,去掉第i个点z原创 2014-07-18 20:42:36 · 845 阅读 · 0 评论 -
【2-sat】uva1391
输出方案采用了刘大师的写法,直接给每个强连通分量标号,每个点只要选较小原创 2014-07-16 23:12:32 · 807 阅读 · 0 评论 -
【网络流】codeforces 434D
感觉是不是该自己搭一个blogle原创 2014-06-23 16:32:17 · 867 阅读 · 0 评论 -
【原始对偶费用流ver2.0】hdu4744
这场比赛我就不多少什么了。。。几乎整场都在写计算几何,恰好三维计算几何又是我的软肋,后面的题基本都没看。。。建图就不多说了,挺水的,标算不是费用流,但我听说有人zkw费用流过了,于是我就写个原始对偶费用流,但是居然超了,本机测试60组极限1050+ms==。。。于是进行优化,lyp跟我说过一次反向spfa就可以dij下去了,但是自己推了一下,有一个对原图的边修改的过程.考虑i->j,w[i原创 2013-09-17 17:56:56 · 1420 阅读 · 0 评论 -
【动态树】codechef GERALD07
学子讲坛终于弄完了,讲了一次《海尔兄弟》原创 2014-05-01 14:42:07 · 969 阅读 · 0 评论 -
【2012 Multi-University Training Contest 7】部分题
适应acm赛制看来不是我原先想的那么简单...4360双关键字单源最短路这道题我交了10+次,原因是初始化没取最小值...看来确实是太久没在考试状态下写题了,心中竟然还在紧张#include #include #include #include #include const long long oo=1314520LL*13520LL+1;using namespace原创 2013-06-20 21:17:46 · 893 阅读 · 0 评论 -
【codechef除草】
Lighting the shop给定一个 N*M 的方格,其中有些格子被标记。你要将被标记的格子染色,使得颜色数最少,并且保证同行同列没有相同颜色的格子。首先这个矩阵填色可以化归为二分图的边染色,将每行每列看作一个节点,分为两部,所谓限制无非是同一个点连出去的边不能同色, 这就是一个最小边染色的问题, 如同其他很多图上的 np 问题,这在二分图上是有多项式算法的。我们来看最少要用原创 2013-01-28 18:20:55 · 892 阅读 · 0 评论 -
Havel定理
给定一个非负整数序列{d1,d2,...dn},若存在一个无向图使得图中各点的度与此序列一一对应,则称此序列可图化。进一步,若图为简单图,则称此序列可简单图化。可图化的判定比较简单:d1+d2+...dn=0(mod2)。关于具体图的构造,我们可以简单地把奇数度的点配对,原创 2011-09-17 13:19:12 · 1456 阅读 · 0 评论 -
二分图集锦
最近状态需要调整的说。。。题目比较水的描述就不贴了。1、居然没想到无奇环就是等价于二分图,点数超级小,直接2^n枚举每个点位于那边。var l,r:array[1..100]of longint; n,m,ans:longint;procedure init原创 2011-09-14 19:05:45 · 816 阅读 · 1 评论 -
POI2008BLO 吐槽
1123: [POI2008]BLOTime Limit: 10 Sec Memory Limit: 162 MBSubmit: 359 Solved: 126[Submit][Status][Discuss]DescriptionByteotia城市原创 2011-08-14 22:43:54 · 760 阅读 · 0 评论 -
判断混合图欧拉回路 poj 1637
比较简单原创 2011-07-30 09:48:40 · 645 阅读 · 1 评论 -
差分约束求最优解 poj1201
差分约束求最优原创 2011-07-16 14:54:16 · 1083 阅读 · 5 评论 -
次小生成树
<br />网上都在流传求出最小生成树后,枚举删除最小生成树上每条边,然后再求最小生成树的方法。<br />时间复杂度为O(N * ( N * logN + M) )(Prim + Heap)<br />结果我今天看到另外一种方法。时间复杂度据说是O(N^2 + M)。<br />核心思想是求出最小生成树后,枚举点i,用o(n)时间遍历生成树中每一个点,求出到每个点j路径上最大边权f[j],如果i与j之间的边w[i,j]<br />不在最小生成树中,那么加入该边,必将形成环,删除f[j]便可求出该情况下最小原创 2011-05-05 13:24:00 · 668 阅读 · 1 评论 -
上下界网络流 poj2396
上下界网络流原创 2011-04-03 17:51:00 · 1157 阅读 · 0 评论 -
迪杰斯特拉+线段树
自创原创 2011-04-05 14:10:00 · 1410 阅读 · 0 评论 -
km算法的非最优匹配应用
km算法原创 2011-05-22 17:03:00 · 1177 阅读 · 0 评论 -
构造边双连通图(求桥) poj 3352
连通性问题原创 2011-05-13 16:56:00 · 1071 阅读 · 0 评论 -
上下界 又见上下界 noi模拟题snake
题目描述 一些蛇覆盖了一个网格。每个格子要么是一个障碍物,要么是蛇的一部分。每条蛇占据了一条折线(拐角处只能水平和竖直连接),且至少占据两个格子。蛇与蛇之间不重叠,蛇也不会与自己重叠。每条蛇还必须满足以下两个条件中的一个: 1. 两个端点所在的格子在网格的边界。原创 2011-08-25 07:53:17 · 1093 阅读 · 0 评论 -
一些生成树问题
poj2349题意:给你平面上一些点,两点距离为边权,现给出n个点和k,n表示点数,k表示联通快数量,要求一个d,使将权值大于d的边去掉,原图划分为k个联通快,并使d最小。结论:建立最小生成树,树中第k长边为d值,因为前k-1个可以成块var s,n,m,k,t:原创 2011-09-24 14:00:53 · 772 阅读 · 0 评论 -
【清澄竞技4.7】painting
好久没更新了,还是要总结一下第一次参加集训队考试,拿了非集训队的第一,happy ing主要是靠ac此题拿的分题目大意:给出一颗n个节点的树,要给每一条边染一个1~n-1的颜色,染颜色i的代价为i,要求同一个节点连出的所有边所染颜色都互不相同,求一个为整棵树染色的方案,使得代价之和尽量小。贪心明显是有后效性的,考虑设计f[i][j]表示i这棵子树,i到根选择j这种颜色,此子树的原创 2012-04-07 22:06:20 · 1080 阅读 · 3 评论 -
最小树形图 jsoi shopping
题目大意:最小树形图;最小树形图:给你一个带权有向图,选出一些边构成一颗有根树,并使得这棵树的边权之和最小; 下面为基本流程.最小树形图模型首先给定点集和一个根,若干条带权有向边,求从根出发的一个子图,边数为N-1,能从根到所有节点,并且边权和最小.首先可以肯定的是,如果这个图从根走一遍后发现不连通,那么肯定无最小树形图.否则每个仍在图中的点i记对于i点的最小权入边对应的入原创 2011-03-26 10:44:00 · 1057 阅读 · 0 评论 -
【apio2012】网络流
虽然apio没去,但是讲课资料还是值得研究第2~4道题还没怎么见过,其他几道就比较老了Transform Matrixmt在wc2010的校内讲课中讲过,但是只记得听过这道题了,不过重新推发现思路还比较清晰,首先我们可以将任意1移至一个0而不影响其他的数字,假设是0就直接交换,如果是1,可以看做是接力,由于1是等价的,所以可以看做穿过去,那么我们就只需将初始状态的1与目标状态的1一原创 2012-05-24 20:31:54 · 1370 阅读 · 0 评论