图论
文章平均质量分 78
__简言
如能忘掉渴望 岁月长 衣裳薄
展开
-
KM算法
引用1:KM算法是通过给每个顶点一个标号(叫做顶标)来把求最大权匹配的问题转化为求完备匹配的问题的。设顶点Xi的顶标为A[i],顶点Yi的顶标为B [i],顶点Xi与Yj之间的边权为w[i,j]。在算法执行过程中的任一时刻,对于任一条边(i,j),A[i]+B[j]>=w[i转载 2011-08-31 00:17:17 · 1053 阅读 · 0 评论 -
HDU--3991[Harry Potter and the Present II] Floyd预处理+最小路径覆盖
这题只要先用Floyd预处理出任意两点间的最短距离,并且把Q个条件按时间先后从小到大排序,然后遍历任意两个条件a,b;如果node[b].t-node[a].t>=map[node[a].p][node[b].p];则连一条a->b的边,最后求Q个点的最小路径覆盖就可以了~~~~原创 2011-08-31 23:52:15 · 1028 阅读 · 0 评论 -
POJ--1364[King] 基础的差分约束
算法:差分约束 设Sum(i)=a1+a2+...+ai任何一个序列aSi + aSi+1 + ... + aSi+ni可以变成 Sum(Si+ni)-Sum(Si-1)然后如果是>号就两边乘-1,>号就变最后就是把然后就化成标准的差分约束了原创 2011-08-01 00:48:58 · 613 阅读 · 0 评论 -
HDU--2066[一个人的旅行] Dijkstra
最短路径题,套用Dijkstra算法,但增加一个顶点A连通所有起点,一个顶点B连通所有终点..问题就转化为A到B的最短路径D,D再减去A跟B多出来的距离就得到结果.. View CodeProblem : 2066 ( 一个人的旅行 ) Judge Status : Ac原创 2010-11-10 00:53:00 · 812 阅读 · 0 评论 -
POJ--3815[The Ninja Way] 差分约束
题意:给你一排树,问你最低到最高的最大距离多少?(1)(行走方式:h1->h2->````hn)其中h1到hn严格递增。(2)相邻(高度相邻)两树的距离要 思路:差分约束 构图:(1):相邻(高度相邻)两树的距离要for(i=1;i<N;i++)原创 2011-07-30 23:36:02 · 1122 阅读 · 0 评论 -
POJ--2983[Is the Information Reliable?] 差分约束
这题是判断图中是否存在环(用最短路或最长路), 开始用spfa, 狂WA,想不通,看了讨论说要添加一个超源点,添加了就AC了。 总结:用spfa算法判断图中是否存在环,要保证从源点开始,能到达各个顶点,这样才能保证差分约束里的各个不等式成立。因为要是源点到达不了某个顶原创 2011-08-01 00:37:30 · 576 阅读 · 0 评论 -
POJ--3169[Layout] 基础的差分约束
题意:一堆牛在一条直线上按编号站队,在同一位置可以有多头牛并列站在一起,但编号小的牛所占的位置不能超过编号大的牛所占的位置,这里用d[i]表示编号为i的牛所处的位置,即要满足d[i]-d[i+1] 1>如果是喜欢关系:即需要满足d[b]-d[a]原创 2011-07-30 23:49:05 · 725 阅读 · 0 评论 -
POJ--1201[Intervals] 基础的差分约束
题目大意:给出N个整数区间[ai,bi],并且给出一个约束ci,( 1= ci个,求出数组Z的最小长度。 分析:对于给定的条件,假设S[j]为数组Z在[0,j]上的包含的元素个数,则我们可以根据条件得到S[bi+1] - S[ai] >= ci ===> S[ai原创 2011-08-01 01:04:41 · 872 阅读 · 0 评论 -
HDU--3592[World Exhibition] 差分约束
题目要求最大值,那么将不等式都变为 建图时注意题目的附加条件:1到N按顺序排即S[I+1]-S[I]>=0 => S[I]-S[I+1] INPUT化为:s[a]-s[b]s[b]-s[a] 如果有负环,说明无满足要求的排法,输出-1原创 2011-08-01 01:01:10 · 986 阅读 · 1 评论 -
POJ--1275[Cashier Employment] 差分约束
设num[i] 为来应聘的在第i个小时开始工作的人数 r[i] 为第i个小时至少需要的人数 x[i] 为招到的在第i个小时开始工作的人数根据题意有: 0 x[i] + x[i-1] +原创 2011-08-01 00:44:53 · 1023 阅读 · 2 评论 -
POJ--3159[Candies] 差分约束
题目意思:flymouse是幼稚园班上的班长,一天老师给小朋友们买了一堆的糖果,由flymouse来分发,在班上,flymouse和snoopy是死对头,两人势如水火,不能相容,因此fly希望自己分得的糖果数尽量多于snoopy,而对于其他小朋友而言,则只希望自己得到原创 2011-08-01 00:35:03 · 631 阅读 · 0 评论 -
HDU--3987[Harry Potter and the Forbidden Forest] 求最小割集中的最小边数
比赛时硬是不会,一开始还打算先找一个最小割,然后删一条边在找一次用来确定当前枚举的这条边是不是所求边数最少的割集中的边。不知道可不可行,反正到最后还是没搞出来。赛后才知道原来有巧妙的构造方法可以直接一边最小割得到答案~~~~ 好神奇的方法、、、、、 贴个链接学习下:ht原创 2011-08-31 23:17:53 · 1152 阅读 · 0 评论 -
HDU--3986[Harry Potter and the Final Battle] 暴力删边枚举
一开始以为暴力删边枚举复杂度太高,想了个各种麻烦的方法~~~~最后居然可以直接暴力水过~~~ PS.要注意最后删边枚举的时候是取一个最大值,而不是最小值、、、 CODE:/*暴力删边枚举*//*AC代码:256ms*/#include #inclu原创 2011-08-31 23:23:23 · 1151 阅读 · 0 评论 -
HDU--3666[THE MATRIX PROBLEM] 查分约束
思路:根据题意可以得到:Xij * Ai – U * Bj 用log把乘法转化成加法:Log(Xij) + logAi – LogU – LogBj logAi – LogBj 另一式子同理,这样就转化成了标准的差分约束问题了。在判负回路时,可以用总的入队原创 2011-07-30 23:42:31 · 811 阅读 · 0 评论 -
HDU 1733 [Escape] 分层图网络流+枚举时间
思路:(1):把每个点按照天数拆成d个点。(2):添加源汇点scr和sink。(3):源点向第0天地图上人所在位置的点连一天容量为1的边。(4):枚举时间Ti(5):每次枚举只需向残留网络里重新添加一些新的点和边。然后再从源点向汇点跑最大流。(6):直到前原创 2011-09-17 19:58:20 · 1514 阅读 · 0 评论 -
HDU--3957[Street Fighter] 最小支配集
正解应该是DLX。可惜不会,比赛中有神牛用dfs+剪枝过的,还有人用随机算法过的。各种Orz.... 用了某大牛的dfs+剪枝,用二进制优化,好神奇、、、、 CODE:/*状态压缩+迭代加深搜索*//*最小支配集*//*AC代码:7437ms*/#原创 2011-08-19 01:11:30 · 1711 阅读 · 4 评论 -
独立集,覆盖集,支配集,最大团,最大匹配
原文:http://www.cppblog.com/RyanWang/archive/2009/05/01/81617.aspx独立集: 独立集是指图的顶点集的一个子集,该子集的导出子图不含边.如果一个独立集不是任何一个独立集的子集, 那转载 2011-08-18 17:44:27 · 1013 阅读 · 0 评论 -
二分图多重匹配问题
原文连接:http://www.cppblog.com/MatoNo1/archive/2011/03/26/142766.html 在二分图最大匹配中,每个点(不管是X方点还是Y方点)最多只能和一条匹配边相关联,然而,我们经常遇到这种问题,即二分图匹配中一个点可以和多条转载 2011-08-09 22:39:34 · 4644 阅读 · 0 评论 -
HDU--3830[Checkers] LCA+二分
今天比赛的时候没来得及看,后然赛后想想也不太会。看了别人的题解我只能说“太神奇”了、、、 某牛blog上讲的很详细,而且我也是按照他的思路写的。说以,直接偷懒把他的思路贴出来、、、、、、 --------------------------------------原创 2011-08-08 23:46:55 · 1705 阅读 · 0 评论 -
POJ--3686[The Windy's] 最小费用流或KM
题意:有N个任务和M个机器,给出第i个任务在第j个机器完成的时间map[i][j],每台机器同一时刻只能处理一个任务,机器必须完整地完成一个任务后才能接着完成下一个任务。问N个任务完成时间的平均值最少为多少。关键:设N个任务的执行时间分别为T1,T2…TN,则N个原创 2011-08-07 18:58:31 · 1104 阅读 · 0 评论 -
HDU--4001[To Miss Our Children Time] 排序+SPFA
思路:把所有长方体先按照一定的规则排好序,然后遍历任意两个长方体u,v。如果u能放在v的上面,则连一条u->v权值为v的高度的边。然后添加一个超级源点scr,对于每个点i,连一条从scr到i权值为i的高度的边。最后从scr开始找一条最长路就是答案。PS.长方体的长原创 2011-09-04 19:43:21 · 809 阅读 · 0 评论 -
HDU--3721[Building Roads] 枚举+求最长路O(N^2)
题意:给一棵树,可以移动树上的一条边,但是必须保证移动之后的图还是一棵树,问如何移动才能使得移动之后的树的直径最短。思路:先在原树上求直径,然后枚举直径上的边(因为要使其直径变短只可能删除直径上的某条边)。u->v.这样原树就被拆成两个子树。原创 2011-08-05 21:13:56 · 1805 阅读 · 7 评论 -
HDU--1534[Schedule Problem] 差分约束
思路:查分约束(求最小值--->= 求最长路)建图:SAS u,v S[u]>=S[v];SAF u,v S[u]>=S[v]+D[v];FAF u,v S[u]+D[u]>=S[v]+D[v];FAS u,v S[u]+D[u]>=S[v];原创 2011-08-04 23:27:07 · 1464 阅读 · 0 评论 -
POJ--1716[Integer Intervals] 差分约束
题意: 给出N个整数区间[ai,bi],使得序列在区间[ai,bj]的个数>=2个,求出序列的最小长度.此题和1201题类似,不过1201题用Bellman_Ford算法求解会超时,可用SPFA算法求解. 分析: 对于给定的条件,令t[i]表示i是否在原创 2011-07-30 23:54:03 · 661 阅读 · 0 评论 -
POJ--1639[Picnic Planning] K限度最小生成树
算法流程:1.将该点(以下用v0表示)从图中删除,将得到m个连通分量。2.对每个连通分量求最小生成树,假设m个。3.从每个连通分量中找与v0关联的权值最小的边,与v0相连接,这样将得到v0的最小m度生成树4.如果 k 5.如果 k >=m ,那么考虑构建 m+1度 最小生成树原创 2011-07-27 03:36:03 · 895 阅读 · 0 评论 -
有上下界的网络流
有上下界的网络流 这几天看了周源的《一种简易的方法求解流量有上下界的网络中网络流问题》,并完成了SGU 194&ZOJ 2314Reactor cooling,SGU 176 Flow construction和HOJ 2135&POJ 2396Budget三道题。 作为周转载 2011-07-23 23:58:45 · 2764 阅读 · 0 评论 -
POJ--2180[The Cow Prom] 求结点>=2的的强连通分支个数
题目大意:很简单,就是求求节点>=2的强连通分支个数,直接套模版就行。。。 CODE:/*有向图的强连通分量*//*AC代码:79ms*/#include #define MAXN 10005using namespace std;struct edge{原创 2011-07-23 23:48:00 · 1048 阅读 · 0 评论 -
POJ--2749[Building roads] 2-SAT第五题,2—SAT+二分判定
题目描述:有n个农场,每个农场有坐标x,y。有两个集合点s1和s2(也有坐标),每个农场必须连接其中的一个(有且仅有一个)。然后有A个条件,每个条件a,b表示a农场不能和b农场连接在一个集合点。然后再有B个条件,每个条件a,b表示a农场必须和b农场连接在一个集合点。问你,在各种合原创 2011-07-23 23:43:52 · 566 阅读 · 0 评论 -
POJ--3683[Priest John's Busiest Day] 2-SAT第四题
题目描述:有n个婚礼,每个婚礼有起始时间si,结束时间ti,还有一个主持时间ti,ti必须安排在婚礼的开始或者结束,主持由祭祀来做,但是只有一个祭祀,所以各个婚礼的主持时间不能重复,问你有没有可能正常的安排主持时间,不能输出no,能的话要输出具体的答案:即每个婚礼的主持时间段是什原创 2011-07-23 23:41:33 · 629 阅读 · 0 评论 -
POJ--3207[Ikki's Story IV - Panda's Trick] 第一道2—SAT
题目大意:一个圆盘上有n个点,编号顺次为0……n-1,现在给出m条线段,这些线段可以在盘的正面,也可以在反面,要求判断最终是否有线段不相交的安排,使满足要求. 思路分析: 令第i条线(i从0开始)在正面为第2i个顶点,在反面为第2i+1个顶点.若第i条线和第j条线构成一原创 2011-07-23 23:30:45 · 430 阅读 · 0 评论 -
POJ--1847[Tram] 最小费用流
题意:给你N个点,告诉你每个点u可以到达的点v,但是可以到达的点又分两类:一类可以直接到达;另一类要经过一次“转换”后可以到达。现在问你点A到点B至少要“转换”几次能到达。如果A不能到B则输出“-1”,否则输出要“转换”的最少次数。 思路:最小费用最大流建图:(1):每个点向他可原创 2011-07-23 22:52:31 · 579 阅读 · 0 评论 -
POJ--3648[Wedding] 2—SAT第六题
题目描述:一堆夫妇去参加一对新人的婚礼。人们坐在一个很长很长的桌子的两侧(面对面)。新郎新娘在桌子头面对面座。新娘不希望看见她对面的一排有一对夫妇坐着(夫妇需要分开两排座)。同时,一些人之间有暧昧关系,新娘也不希望有暧昧关系的人同时坐在她对面的一排。问你可否满足新娘的要求,可以的原创 2011-07-23 23:46:01 · 594 阅读 · 0 评论 -
POJ--2186[Popular Cows]强连通分支+缩点
思路分析:(1)首先用Tarjan求出连通分支的个数,然后依次求各个连通分支的出度是否为0,如果仅有一个连通分支出度为0则这个联通分支内的点的个数就是答案;(2)如果有多于一个的联通分支的出度为0,则说明此有向图肯定不连通。因此直接输出0。(因为缩点后,有向图变成一棵树,若连通则原创 2011-07-23 23:27:39 · 562 阅读 · 0 评论 -
POJ--2060[Taxi Cab Scheme] 最小路径覆盖
题目大意:给你M个出租车请求,告诉你每个请求的出发时间s,起点坐标(x1,y1),终点坐标(x2,y2)。要你求出完成所有请求所需要的最少出租车辆数。(其中若一辆出租车完成请求u后,从u的终点赶到请求v的起点后的时间小于请求v的起始时间。那么这辆出租车还可以去完成请求v)。 思路原创 2011-07-23 21:46:37 · 575 阅读 · 0 评论 -
最小割集Stoer-Wagner算法
一个无向连通网络,去掉一个边集可以使其变成两个连通分量则这个边集就是割集;最小割集当然就权和最小的割集。可以用最小切割最大流定理:1.min=MAXINT,确定一个源点2.枚举汇点3.计算最大流,并确定当前源汇的最小割集,若比min小更新min4.转到2直到枚举完毕5.min即为转载 2011-07-24 00:01:52 · 1903 阅读 · 0 评论 -
网络流专题训练材料收集
我这次上传2本书,还有我写的一个简短的paper。分别是:《Network Flows - Theory, Algorithms, And Applications》包括习题解答《Combinatorial optimization:networks and matroids》"转载 2011-07-24 10:59:27 · 2240 阅读 · 0 评论 -
RMQ_ST算法
原文链接:http://kmplayer.iteye.com/blog/575725 ST算法(Sparse Table):它是一种动态规划的方法。 以最小值为例。a为所寻找的数组.用一个二维数组f(i,j)记录区间[i,i+2^j-1](持续2^j个)区间中的最小值。其中f[i转载 2011-07-24 11:05:10 · 1926 阅读 · 0 评论 -
POJ--2286[The Rotation Game] IDA*
剪枝:每次不要往反方向搜。注意:长度相同要输出字典序最小的操作PS.一开始是用状态压缩+BFS的,结果无情的TLE了、、、 估价函数:int h(int st[])//估价函数{ int i,num[4]={0}; for(i=0;i<8;i++) num[s原创 2011-07-27 03:44:28 · 666 阅读 · 0 评论 -
POJ--3921[Destroying the bus stations] 最小费用流+拆点
题目大意:一个有向图有N(NPS.不存在一条边直接连1-N。 思路:最小费用流+拆点 构图:(1):把[2..N-1]个点拆成i->i+N连一条容量为1费用为0的边;//保证每个点被破坏一次(2):把1和N拆点,连一条;//保证不会破坏(3):如果存在一条边(u->v)怎连一条u原创 2011-07-26 01:02:48 · 1303 阅读 · 0 评论 -
POJ--3592[Instantaneous Transference] 缩点+求最长路
思路:(1):构完图缩点然后求最长路(2):注意*号的位置可以选择不跳(3):数据里没有*号跳到#号的情况PS.说实话这题不难,思路和poj3160一样、、 CODE:/*缩点+求最长路*//*注意:*号的位置可以选择不跳*//*AC代码:16ms*/#include原创 2011-07-24 17:35:08 · 704 阅读 · 0 评论