hdu4081】的更多相关文章

pid=4081">http://acm.hdu.edu.cn/showproblem.php?pid=4081 Problem Description During the Warring States Period of ancient China(476 BC to 221 BC), there were seven kingdoms in China ---- they were Qi, Chu, Yan, Han, Zhao, Wei and Qin. Ying Zheng wa…
hdu4081 题意 给出n个点坐标,每个点有权值,要求得到一颗生成树,且其中有一条道路修建不需要花费,但是要求这条道路所连接的两点的权值之和除以剩下所有道路的距离花费最大. 分析 首先求最小生成树,然后枚举所有的边,即去掉这条边后,在得到的两个连通图中分别找最大权值的点,计算最优比率. code #include<cstdio> #include<cstring> #include<cmath> #include<iostream> #include<…
hdu4081 Qin Shi Huang's National Road System Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 3342    Accepted Submission(s): 1171 Problem Description During the Warring States Period of ancient…
题目ID:hdu4081   秦始皇修路 题目链接:点击打开链接 题目大意:给你若干个坐标,每个坐标表示一个城市,每个城市有若干个人,现在要修路,即建一个生成树,然后有一个魔法师可以免费造路(不消耗人力),然后秦始皇希望这条免费的路A/B最大,A是这条路连接的两个城市人口和,B是出了这条路以外所有路的总长度.让你输出这个A/B. 思路:这道题数据量不大,可以两重for算出点和点之间的距离,建图.A/B这个式子A不难算,B的话作为分母希望越小越好,但是和分子在一起,最小的B未必是最好的B.所以需要…
题目链接:https://vjudge.net/problem/HDU-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): 8970    Accepted Submission(s): 3175 Problem Description During the…
题意:有n个点,n-1条边.现在徐福可以让一条边无消耗建立,即魔法边.B表示除魔法边之外的的其他边的消耗值和,A表示这条魔法边相连的2个集合中都选一点,这两点的最大值,现在要求A/B最大. 方法:因为2个值都在变,所以不能贪心.考虑枚举边的情况.由于直接枚举边太多,可以先考虑让B变小,因为A相比来说是可控的.B很容易就想到是最小生成树里面的边.先求一遍最小生成树,得到minMST值.枚举删除生成树上的边.由于删除生成树上的边后,变成2棵子树(由于删除生成树上的边,所以B<minMST),然后选出…
枚举作为magic road的边,然后求出A/B. A/B得在大概O(1)的时间复杂度求出,关键是B,B是包含magic road的最小生成树. 这么求得: 先在原图求MST,边总和记为s,顺便求出MST上任意两点路径上的最长边d[i][j]. 当(u,v)是magic road时, 如果它在原本的MST上,则B就等于s-原(u,v)的权,而原(u,v)的权其实就是d[u][v]: 如果它不在原本的MST上,则B就等于s-d[u][v]+0. 总之就是一个式子:B=s-d[u][v]. 于是,在…
During the Warring States Period of ancient China(476 BC to 221 BC), there were seven kingdoms in China ---- they were Qi, Chu, Yan, Han, Zhao, Wei and Qin. Ying Zheng was the king of the kingdom Qin. Through 9 years of wars, he finally conquered all…
Qin Shi Huang's National Road System                                                                   Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)                                                                …
先求出最小生成树,然后枚举树上的边,对于每条边"分别"找出这条割边形成的两个块中点权最大的两个 1.因为结果是A/B.A的变化会引起B的变化,两个制约.无法直接贪心出最大的A/B.故要通过枚举 2.无论magic road要加在哪里.加的边是否是最小生成树上的边,都会产生环,我们都要选择一条边删掉 注意删掉的边必须是树的环上的边.为了使结果最大.即找出最大的边 3.能够枚举两点.找出边,也能够枚举边,找出点,我是用后者.感觉比較easy写也好理解 #include <cstdio…