上一页 1 ··· 4 5 6 7 8 9 10 11 12 ··· 22 下一页
摘要: 题意:n个点,m个边,然后给出m条边的顶点和权值,其次是q次替换,每次替换一条边,给出每次替换的边的顶点和权值,然后求出这次替换的最小生成树的值;最后要你输出:q次替换的平均值。其中n<3000,q<10000。分析:我们可以先求最小生成树,对于最小生成树的每一条边,我们要找到它的最佳替代边,使其价值最小。具体实践方法:树形dp,从每个点dfs一次,每次把i当成根,其余都是它的孩子,更新dp数组,对于i点为根的除j之外的所有的子树中的所有点到j距离最小值。每次从一个点root开始dfs,搜索到最后一个叶子,开始看G[root][u]的大小,保证(root,u)不是MST上的的边,那 阅读全文
posted @ 2013-06-18 14:10 z.arbitrary 阅读(800) 评论(0) 推荐(0)
摘要: 无源无汇可行流以前写的最大流默认的下界为0,而这里的下界却不为0,所以我们要进行再构造让每条边的下界为0,这样做是为了方便处理。对于每根管子有一个上界容量up和一个下界容量low,我们让这根管子的容量下界变为0,上界为up-low。可是这样做了的话流量就不守恒了,为了再次满足流量守恒,即每个节点"入流=出流”,我们增设一个超级源点ss和一个超级终点tt。我们开设一个数组du[]来记录每个节点的流量情况。du[i]=in[i](i节点所有入流下界之和)-out[i](i节点所有出流下界之和)。当du[i]大于0的时候,ss到i连一条流量为du[i]的边。当du[i]小于0的时候,i到t 阅读全文
posted @ 2013-06-05 20:11 z.arbitrary 阅读(246) 评论(0) 推荐(0)
摘要: 题意:给n个点,及m根pipe,每根pipe用来流躺液体的,单向的,每时每刻每根pipe流进来的物质要等于流出去的物质,要使得m条pipe组成一个循环体,里面流躺物质。并且满足每根pipe一定的流量限制,范围为[Li,Ri].即要满足每时刻流进来的不能超过Ri(最大流问题),同时最小不能低于Li。分析:无源汇有上下界的最大流建图:以前写的最大流默认的下界为0,而这里的下界却不为0,所以我们要进行再构造让每条边的下界为0,这样做是为了方便处理。对于每根管子有一个上界容量up和一个下界容量low,我们让这根管子的容量下界变为0,上界为up-low。可是这样做了的话流量就不守恒了,为了再次满足流量守 阅读全文
posted @ 2013-06-05 18:16 z.arbitrary 阅读(1209) 评论(0) 推荐(0)
摘要: 题意:一个无向带权图,候选方案是至少两个点的连通子图,连通子图里的边权的最小值比边界边的最大值大(边界边是一个点在这个子图里,另一个点不在这个子图里)!.问你所有满足候选方案的子图的顶点个数总和是多少?分析:kruskal的思想,先将边权大的连接,然后判断是否满足,,,依次连接即可!// File Name: 1265.cpp// Author: Zlbing// Created Time: 2013/5/31 16:52:09#include<iostream>#include<string>#include<algorithm>#include<c 阅读全文
posted @ 2013-05-31 17:33 z.arbitrary 阅读(324) 评论(0) 推荐(0)
摘要: 题意:要求从左下角到右上角,中间会经过旋转门,而旋转门的房间固定只有一个房间能进入.旋转门每转90度,会消耗时间d,然而每个旋转门所消耗的时间都不同.而一般进入房间消耗单位1时间,求最少时间!分析:其实是个很简单的最短路的题,,,,只是弱菜的我题意看错,每个旋转门消耗时间不同....还有写代码的能力不强,...老写错和漏掉什么的!唉~只要简单处理下旋转门即可!// File Name: 10967.cpp// Author: Zlbing// Created Time: 2013/5/29 10:18:14#include<iostream>#include<string&g 阅读全文
posted @ 2013-05-29 22:35 z.arbitrary 阅读(377) 评论(0) 推荐(0)
摘要: 题意:电梯调度的加强版,有N个电梯,每个电梯只能到规定的楼层停,从A电梯到B电梯时需要花5秒时间,并且还需要等待B电梯停到这层花费的时间(按最糟糕的情况处理)分析:因为最优策略是每个电梯最多搭乘一次,若搭乘多次则花费的时间会更多..所以不用考虑每个电梯搭乘后的状态.. 松弛时一定是一个电梯到另一个电梯,因为在同一个电梯无法松弛!// File Name: 10841.cpp// Author: Zlbing// Created Time: 2013/5/19 12:58:02#include<iostream>#include<string>#include<al 阅读全文
posted @ 2013-05-19 23:10 z.arbitrary 阅读(303) 评论(0) 推荐(0)
摘要: 题意:求A到B的K短路!分析:使用A*算法所谓K短路,就是从s到t的第K短的路,第1短就是最短路。 如何求第K短呢?有一种简单的方法是广度优先搜索,记录t出队列的次数,当t第k次出队列时,就是第k短路了。但点数过大时,入队列的节点过多,时间和空间复杂度都较高。 A*是在搜索中常用的优化,一种启发式搜索。简单的说,它可以用公式表示为f(n) = g(n) + h(n),其中,f(n)是从s经由节点n到t的估价函数,g(n)是在状态空间中从s到n的实际代价,h(n)是从n到t的最佳路径估计代价。在设计中,要保证h(n)<= n到t的实际代价,这一点很重要,h(n)越接近真实值,速度越快。由于 阅读全文
posted @ 2013-05-19 01:24 z.arbitrary 阅读(546) 评论(0) 推荐(0)
摘要: 题意:一个简单图,求这个图两点之间的次短路!分析:因为只要求次短路,所以只要保存两点之间的最短和次短这两个状态即可,用dijkstra可求出....同时要注意,若a->a,这则点的最短路为0!还有要注意的是最短路和次短路的距离不能相等!// File Name: 10342.cpp// Author: Zlbing// Created Time: 2013/5/18 11:02:05#include<iostream>#include<string>#include<algorithm>#include<cstdlib>#include&l 阅读全文
posted @ 2013-05-18 11:44 z.arbitrary 阅读(593) 评论(0) 推荐(0)
摘要: 为数不多的没看题解写出来的题....不容易啊我!!不过还是挺兴奋的吧.题意:给出一个图,有N个点,M条边,边分两种,有单向的,也有无向的,一开始图中任意两点都连通.问你,将尽量多的无向边转换成有向边.分析:通过画图分析,当仅当无向边是桥的时候,无向边不能转换成有向边,否则就能转换成有向边..故,可以通过求桥来得出答案.但边是无向边时,且不是桥,则将边设置成遍历方向即可!// File Name: 1310.cpp// Author: Zlbing// Created Time: 2013/5/17 14:01:49#include<iostream>#include<stri 阅读全文
posted @ 2013-05-17 15:02 z.arbitrary 阅读(1071) 评论(6) 推荐(1)
摘要: 题意:求除去任意两点及这两点所连的边的连通分量最大分析:枚举一点,除去这一点形成了一个新图,然后求割点,因为另外一点肯定是割点,不然无法使连通分量最大!然后计算除去割点的连通分量,最后求最大值即可!// File Name: test.cpp// Author: Zlbing// Created Time: 2013/5/14 8:23:10#include<iostream>#include<string>#include<algorithm>#include<cstdlib>#include<cstdio>#include< 阅读全文
posted @ 2013-05-16 10:34 z.arbitrary 阅读(273) 评论(0) 推荐(0)
上一页 1 ··· 4 5 6 7 8 9 10 11 12 ··· 22 下一页