HDU 4081 MST】的更多相关文章

LA:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=3714 HDU:http://acm.hdu.edu.cn/showproblem.php?pid=4081 题目大意: 秦始皇要在n个城市之间修筑一条道路使得任意两个城市均可连通.有个道士可以用法力帮忙修一条路.秦始皇希望其他的道路总长B最短且用法术连接的两个城市的人口…
这道题在LRJ的书上看到,今天回过头来继续看这题,发现很多东西都已经明白了. 题意:有N个城市,每个城市有一个坐标和人口. 现在要建一些边使得他们都联通,花费就是这些边的长度,然后有一条边可以免费.问免费一条边之后,使得免费的该条边的两个城市的人口/剩下来的边的长度 ,这个比值最大. 思路:首先做一遍MST,求出MST之后,我们枚举每条边,看这条边是否可以删除,也就是免费. 那么删除一条边之后对MST有什么影响呢. 首先我们假设免费(删除)了一条边a -> b ,权值是c .假设这条边是MST上…
Qin Shi Huang's National Road System HDU - 4081 感觉这道题和hdu4756很像... 求最小生成树里面删去一边E1 再加一边E2 求该边两顶点权值和除以(最小生成树-E1)的最大值 其中(最小生成树-E1)必须是最小的 先跑一遍prim 跑完之后在最小生成树里面dp dp[i][j] = i到j的路径中最大的那条边 最小生成树减去dp[i][j]肯定会最小 代码如下 #include <cstdio> #include <algorithm…
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=4081 题意 给出n个城市的坐标 以及 每个城市里面有多少人 秦始皇想造路 让每个城市都连通 (直接或者间接都可以) 然后 有一个特别厉害的大臣 可以造一条魔法路 不用耗费资金 但是要求 这条路链接的两座城市的人要尽量多 定义了一个 value = A/B A = 魔法路链接的两座城市的总人数 B = 除了魔法路,其他路的总权值 求出最大的value 思路 首先我会想到最小生成树 然后我想让value…
原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=4081 Qin Shi Huang's National Road System Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 5428    Accepted Submission(s): 1902 Problem Description…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4081 题意:有n个城市,秦始皇要修用n-1条路把它们连起来,要求从任一点出发,都可以到达其它的任意点.秦始皇希望这所有n-1条路长度之和最短.然后徐福突然有冒出来,说是他有魔法,可以不用人力.财力就变出其中任意一条路出来. 秦始皇希望徐福能把要修的n-1条路中最长的那条变出来,但是徐福希望能把要求的人力数量最多的那条变出来.对于每条路所需要的人力,是指这条路连接的两个城市的人数之和. 最终,秦始皇给…
Qin Shi Huang's National Road System Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 6137    Accepted Submission(s): 2143 Problem Description During the Warring States Period of ancient China(47…
题意:给你n(n = 1000)个二维点,第一个点是power plant,还有n - 1个点是dormitories.然后现在知道有一条寝室到寝室的边是不能连的,但是我们不知道是哪条边,问这种情况下,最小生成树的最大值. 好题,毕竟做了一下午,注意dis要double转换 dfs求的是从cur点出发到以u为根的树的最小距离 #include<cstdio> #include<iostream> #include<algorithm> #include<cstri…
分析:http://www.cnblogs.com/wally/archive/2013/02/04/2892194.html 这个题就是多一个限制,就是求包含每条边的最小生成树,这个求出原始最小生成树然后查询就好了 然后预处理那个数组是O(n^2)的,这样总时间复杂度是O(n^2+m) 这是因为这个题n比较小,如果n大的时候,就需要路径查询了,比如LCA 或者树链剖分达到O(mlogn) #include <iostream> #include <algorithm> #incl…
步骤是先求最小生成树,然后选两个不同的点,遍历所有的这样的点,选出两点人口比较大,而且连通两点的边的最大边比较大的情况. 因此要对i,j点连接起来的边进行遍历. #include<stdio.h> #include<string.h> #include<math.h> #define N 1010 #define max(a,b) ((a)>(b)?(a):(b)) #define INF 999999999 double map[N][N],lowcost[N]…