uva1494 - Qin Shi Huang's National Road System 次小生成树

华为P30/pro (ELE-AL00) 鸿蒙4.2降级 EMUI 9 分享 阅读详情

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 six other kingdoms and became the first emperor of a unified China in 221 BC. That was Qin dynasty-- the first imperial dynasty of China(not to be confused with the Qing Dynasty, the last dynasty of China). So Ying Zheng named himself "Qin Shi Huang" because "Shi Huang" means "the first emperor " in Chinese.

\epsfbox{p5713.eps}

Qin Shi Huang undertook gigantic projects, including the first version of the Great Wall of China, the now famous city-sized mausoleum guarded by a life-sized Terracotta Army, and a massive national roadsystem. There is a story about the road system:

There were n cities in China and Qin Shi Huang wanted them all be connected byn - 1 roads, in order that he could go to every city from the capital city Xianyang. Although Qin Shi Huang was a tyrant, he wanted the total length of all roads to be minimum,so that the roadsystem may not cost too many people's life. A daoshi(some kind of monk) named Xu Fu told Qin Shi Huangthat he could build a road by magic and that magic roadwould cost no money and no labor. But Xu Fu couldonly build ONE magic road for Qin Shi Huang. So QinShi Huang had to decide where to build the magic road. Qin Shi Huang wanted the total length of all none magic roads to be as small as possible, but Xu Fu wanted the magic road to benefit as many people as possible -- So Qin Shi Huang decided that the value ofA/B (theratio of A toB) must be the maximum, which A is the total population of the two cites connected by the magic road, andB is the total length of none magic roads.

Would you help Qin Shi Huang?

A city can be considered as a point, and a road can be considered as a line segment connecting two points.

Input 

The first line contains an integer t meaning that there aret test cases (t$ \le$10).

For each test case:

The first line is an integer n meaning that there aren cities (2 < n$ \le$1000).

Then n lines follow. Each line contains three integersX, Y and P (0$ \le$X,Y$ \le$1000, 0 <P < 100000). (X, Y) is the coordinate of a city andP is the population of that city.

It is guaranteed that each city has a distinct location.

Output 

For each test case, print a line indicating the above mentioned maximum ratio A/B. The result should be rounded to 2 digits after decimal point.

Sample Input 

2
4
1 1 20
1 2 30
200 2 80
200 1 100
3
1 1 20
1 2 30
2 2 40

Sample Output 

65.00
70.00

  有N个城市,要建一些路。道士能帮忙用法术修一条,不花钱。设道士修的路连接的城市人口为A,其它路总长为B。找出A/B最大的方案。

  次小生成树是最小生成树加一条边u-v后再删除u-v路径上权值最大的一条边,因为最小生成树加边后会形成环,所以在环中删掉一条各个点还是可达。同理这个题就只用枚举道士修的u-v,求出最小生成树后删除u-v路径上最大权值的一条边。求maxcost[u][v]复杂度O(N^2),把无根的最小生成树转成有根树,在这个过程中求出maxcost。

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<vector>
#include<set>
#include<utility>
#include<cstring>
#include<stack>
#include<queue>
#include<map>
#include<deque>
#include<cmath>
#include<map>
#define INF 0x3f3f3f3f
#define MAXN 1010
#define eps 1e-3
using namespace std;
typedef long long LL;
int T,N,M,pa[MAXN],x[MAXN],y[MAXN],p[MAXN];
vector<int> G[MAXN],node;
vector<double> C[MAXN];
double maxcost[MAXN][MAXN];
int find(int x){
    return x==pa[x]?x:pa[x]=find(pa[x]);
}
struct Edge{
    int x,y;
    double dist;
    bool operator < (const Edge& rhs) const{
        return dist<rhs.dist;
    }
}e[MAXN*MAXN];
double MST(){
    M=0;
    for(int i=0;i<N;i++)
    for(int j=i+1;j<N;j++) e[M++]=(Edge){i,j,sqrt((x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j]))};
    sort(e,e+M);
    for(int i=0;i<N;i++){
        pa[i]=i;
        G[i].clear();
        C[i].clear();
    }
    double ret=0;
    int cnt=0;
    for(int i=0;i<M;i++){
        int x=e[i].x,y=e[i].y,u=find(x),v=find(y);
        double d=e[i].dist;
        if(u!=v){
            pa[u]=v;
            G[x].push_back(y);
            C[x].push_back(d);
            G[y].push_back(x);
            C[y].push_back(d);
            ret+=d;
            if(++cnt==N-1) break;
        }
    }
    return ret;
}
void DFS(int u,int fa,double facost){
    int L=node.size();
    for(int i=0;i<L;i++){
        int x=node[i];
        maxcost[x][u]=maxcost[u][x]=max(maxcost[x][fa],facost);
    }
    node.push_back(u);
    L=G[u].size();
    for(int i=0;i<L;i++){
        int v=G[u][i];
        if(v!=fa) DFS(v,u,C[u][i]);
    }
}
int main(){
    freopen("in.txt","r",stdin);
    scanf("%d",&T);
    while(T--){
        scanf("%d",&N);
        for(int i=0;i<N;i++) scanf("%d%d%d",&x[i],&y[i],&p[i]);
        double tot=MST();
        node.clear();
        memset(maxcost,0,sizeof(maxcost));
        DFS(0,-1,0);
        double ans=-1;
        for(int i=0;i<N;i++)
            for(int j=i+1;j<N;j++) ans=max(ans,(p[i]+p[j])/(tot-maxcost[i][j]));
        printf("%.2lf\n",ans);
    }
    return 0;
}


SAP ABAP 四种传统的数据库视图类型介绍之二:Projection View 一是该 projection view 只暴露了底层 TADIR 表的四个字段,因此通过该 view 维护数据,在维护界面我们只能维护一条记录的四个字段,如下图所示。使用 Projection view 的优点在于其设计灵活性:如果系统中原始的数据库表字段较多,通过投影仅保留关键信息可有效降低从数据库层到应用层之间的数据传输负担,且保持数据的一致性。其二是笔者之前的文章提到,TADIR 是 ABAP 系统重要的对象注册表,如同 window 操作系统的注册表一样,一般的应用开发人员不应该去修改其内容。 阅读详情

相关推荐

【GAN实战】基于pytorch-CycleGAN与pix2pix的自定义数据集训练全攻略

本文详细解析了基于PyTorch的CycleGAN与pix2pix模型在自定义数据集上的完整训练流程。核心在于根据数据是否成对来正确选择模型:pix2pix适用于严格配对的“孪生”数据,而CycleGAN则擅长处理非配对的“散装”数据集。文章从数据准备、配置训练到测试应用,提供了全链路实战指南与关键参数调优心得,帮助开发者高效实现图像到图像的风格转换。

x2y3z4a5b的博客 704

uva 1494 Qin Shi Huang's National Road System (次小生成树)

uva 1494 Qin Shi Huang's National Road System Description During the Warring States Period of ancient China(476 BC to 221 BC), there were seven kingdoms in China ---- they were Qi, Chu

总有那么一群人喜欢盯着我的博客看,估计这是他们见过最长的博客名,我必须得告诉他们博客名最长可以写多长 735

Dzzoffice结合OnlyOffice 报错排查流程总结

首先访问 OnlyOffice 首页,如下图:出现上图仍旧不能说明你的 OnlyOffice 服务已经成功安装,我们需要启动 OnlyOffice 服务测试用例来检测,可以看到上图出现了两条命令,第一条命令是用来启动测试用例服务的,我们只需要在后台执行该命令即可,Windows环境是以管理员身份运行Windows PowerShell输入即可运行了。

小胡的博客 4596

UVA 1494 - Qin Shi Huang's National Road System(次小生成树)

题目链接:点击打开链接 题意:n个城市,需要修建一些道路使得任意两个城市联通,还可以修一条魔法道路, 不花钱, 设魔法路连接的城市的人口之和为A, 所有道路总长为B, 求A/B的最大值。 思路: 次小生成树。 先做一次最小生成树, 然后用dfs搜索出最小生成树上任意两点之间最长的道路长度。  然后枚举在哪两个城市之间建魔法道路。n^2复杂度。 细节参见代码: #include #inclu

AC_Arthur的专栏 1714

workbench谐响应

定义材料 打开Engineering Data定义材料,在分析时不同部分选择不同材料 建模 打开Geometry建模,我举的例子很简单就一根光秃秃的轴 因为要加轴承,在轴上创建imprint face 因为要用point mass代替轴上原来的盘,在轴上盘的位置新建一个Plane,用Slice方法将轴从XYPlane3分成两段 施加边界条件以及谐响应分析 打开Model 1.在两段轴的交界面处,创建Point Mass,输入质量与转动惯量,位置在轴线上 2.mass point promote to.

my blogs include programming, math, physics.回首过去,放眼未来。 leslielee.blog.youkuaiyun.com 5881

CTF——流量分析题型整理总结

我见过的流量分析类型的题目总结: 一,ping 报文信息 (icmp协议) 二,上传/下载文件(蓝牙obex,http,难:文件的分段上传/下载) 三,sql注入攻击 四,访问特定的加密解密网站(md5,base64) 五,后台扫描+弱密码爆破+菜刀 六,usb流量分析 七,WiFi无线密码破解 八,根据一组流量包了解黑客的具体行为 例题: 一,ping 报文信息 (icm...

小锤队长的博客 5万+

uva 1494 - Qin Shi Huang's National Road System(次小生成树类似问题)

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. T

勿忘初衷 1352

6种常用数据分析方法详解:从描述统计到时间序列

数据分析是连接数据与业务决策的桥梁。面对海量数据,掌握描述性统计与对比分析可快速了解现状与差距;相关分析与回归分析能揭示变量间的关联与影响大小;聚类分析用于用户分群,时间序列分析则预测未来走势。这些方法广泛应用于用户画像、销量预测、活动效果评估等场景,是数据分析师和运营人员必备的技能。系统掌握这6种核心方法的使用场景、原理逻辑与实操步骤,能够帮助读者建立完整分析框架,真正用数据驱动业务增长。

weixin_34405354的博客 335

Qin Shi Huang's National Road System UVA - 1494(次小生成树)

秦始皇统一中国之后要在全国修公路连接各个城市,皇帝只想修成最小生成树(距离最小,不考虑人力),一个道士说自己可以不花人力物力修一条路,经过两方妥协,选择max(两个城市人口/(生成树长度-这条路的长度(连接两个城市的路中,权值最大的那段路)))的路让他变,求这个比值最大值。 #include <iostream> #include <cstdio>...

babing2770的博客 123

验证 helm Chart 的正确性

验证 helm Chart 的正确性

小橙子的笔记屋 281

【Envi风暴】Envi5.6安装图文教程(附Envi5.6完整版下载)

【Envi风暴】Envi5.6与应用商店app store安装图文教程(附Envi5.6完整版下载)从文末网盘下载完整的ENVI5.6安装包,如下所示:双击envi56-win.exe,开始安装。将f__x64下的两个补丁文件拷贝到安装路径。将f__x86下的两个补丁文件拷贝到安装路径。

智慧空间实验室 9193

UVA 1494 Qin Shi Huang's National Road System(次小生成树+Prim)

#include #include #include #include #include #include using namespace std; const int maxn=1000+5; int x[maxn],y[maxn],val[maxn]; int n; struct edge{ int u,v; double dist; edge(int u=0,int

qq_33901573的博客 321

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

UVA - 1494 Qin Shi Huang's National Road System (类次小生成树)

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 was the king of the

那些年 1259

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

UVA 1494 Qin Shi Huang National Road System(类次小生成树)

先找出最小生成树,在求最小生成树的过程中,把uv两点路径上的最大权值边存到d[u][v]上,因为当枚举点uv时,uv就连接了,那么就有n条边了,必须去掉一条边,如果去掉uv路径之外的边,则整棵树就被分开了,所以去掉uv路径上的一条边,同时还要保证去掉之后的树的权值之后最小,所以就要去掉uv路径上的权值最大的边得到B,然后uv两城市的人口相加得到A。就可以求出A/B了,不断枚举uv求出最大的即可。为

qq_33901573的博客 354

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

UVA1494 Qin Shi Huang's National Road System 题解(次最小生成树)

题目链接 题目大意 给定n个点的点权及相互间的边权,求一棵树,其中一条边的边权变为0,树的比率值为该0值边所连的两点的点权和/剩下的树边和。 求这个值最大是多少。 题目思路 这题要用到次小生成树的思想,即找到最小生成树,然后添加一条边构成环,再删掉环中属于最小树的最大边,用这种方法遍历所有边以 找到最终长度。 易错警示 1:注意初始化的时候要仔细 2:注意边长double类型 3:求i到j的所有路...

hunxuewangzi的博客 216

uva 1494 Qin Shi Huang's National Road System

这题和求次小生成树的思路有点像。 首先qiucuh

Jane的私房菜 640

UVA1494Qin Shi Huang's National Road System(LA5713)(HDU4081)

次小生成树的应用 总思路是枚举每条边作为那条免费的路; 当你确定一条免费的路之后,相当于在这两个点之间加了一条长度为0的边之后求MST; 根据刘汝佳所说,MST就是把所有环中的最大边删除,我们首先要求出MST 如果枚举的边属于MST,则他原来不是环上的最大边,现在也不是,该这条边为0后MST的结构不变,只是MST的总长度少了这条边的长度;    如果枚举的边不属于MST,则他原来肯定是某

cx422803902的专栏 884

poj 1944 Qin Shi Huang's National Road System(次小生成树)

UVA - 1494点我点我:-)

Free Cat~~~ 跳动的喵 367

[UVA1494] Qin Shi Huang's National Road System

题目 戳这里 题解 从今天起我要改邪归正,好好刷题准备联赛! 这是一道经典的最小生成树题目。 枚举每一条边作为道士要修的路,求出包含这条边的最小生成树。 先求出原图的最小生成树。 如果要删的边在最小生成树上,那仍是原来那个最小生成树。 如果不在,便要把这条边加进去。类似次小生成树,删除原最小生成树中这两点间唯一路径上边权最大的边,并把这条边加进去。 我们要预处理最小生成树上两点间路径上边权最大的边...

weixin_30814319的博客 122

Dinic+当前弧优化

Dinic算法是不停用BFS构造层次图,然后

7141

Dijkstra 求最短路 最大流

原来Dijkstra算法不光只能求最短路问题,还能求最大流问题~~~求最短路 最大流" title="Dijkstra 求最短路 最大流"> 最短路问题时,Dijkstra算法的基本思想:   邻接矩阵w[x][y]保存x和y间的距离(别的设为INF,表示不连通,设为-1也行,后来更新加一个if(w[x][y]>=0)),数组d保存通过已经确定的点从起点到每个点的最短路。初始化d[0]=0,

1847

网络流 最大流 Edmonds-Karp算法

Edmonds-Karp算法,复杂度O(VE^2)。思想就是找增广路,不断增加流量。在残量(每条边上流量和容量的差)图上找一条每个边权值都为正的路(可以通过BFS,比DFS效率高),这些边权值里的最小值就是这条路可以增加的流量,然后在这条路径上更新流量。再重复找这样的路更新流量,直到找不到这样的路了就说明流量不能再增加了,当前的流就已经是最大流。   同时最大流也是最小割(权值和最小的割集)。设

1842

Bellman_Ford和Spfa两种方法判断负环

Bellman_Ford是通过N-1次循环求出每个点到原点的最短路的,每次循环遍历所有的边,如果能更新就更新。前面说过为什么N-1次就行(若一个点到起点的最短路需要经过N个点,包括他自己,那么第N次循环就能确定他的最短路)。   最短路一定是不含环的,如果存在负环就根本不存在最短路了。所以这个方法可以用来判断是否有负环,如果循环了N-1次后还能进行松弛操作,说明有负环。Bellman_Ford的

1712

hdu5294 Tricks Device 最短路+最小割 多校联合第一场

Tricks Device Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 66    Accepted Submission(s): 14 Problem Description Innocent Wu follows

1563

uva1416 - Warfare And Logistics 最短路树优化

The army of United Nations launched a new wave of air strikes on terroristforces. The objective of the mission is to reduce enemy's logistical mobility. Each airstrike will destroy a path and therefor

1002

uva1324 - Bring Them There 网络流

By the year 3141, the human civilization has spread all over the galaxy. The special hypertunnels are usedto travel from one star system to another. To use the hypertunnel, you fly to a special locati

816
上一篇: uva11478 - Halum 二分+差分约束
下一篇: uva11354 - Bond 最小瓶颈路+LCA
小小小小葱
博客等级 码龄14年 22粉丝 266原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值