UVALive - 5713 最小生成树
题意:
秦始皇修路,已知n个城市的坐标以及该城市的人口数,修路的费用是两个城市之间的欧几里得距离,其中可以有一条路不用花费代价但是要求这条路连接的两个城市的人口之和A/B尽量大,其中B是修路的总费用。
输入t组数据
输入n城市个数
输入n行x,y,z表示坐标和人口数
输出A/B.
代码:
//类似次小生成树的处理方法,先求出最小生成树值ans,枚举要选的边u-v,ans减去u-v路径中的最大权值之后比较比值大小。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
const double inf=10000007.0;
int t,n,vis[],pre[];
double maxl[][],dis[],x[],y[],w[],mp[][];
double Prim(){
memset(maxl,,sizeof(maxl));
for(int i=;i<n;i++){
dis[i]=mp[][i];
vis[i]=;pre[i]=;
}
vis[]=;
double ans=;
for(int i=;i<n;i++){
double minl=inf;int sta=-;
for(int j=;j<n;j++){
if(!vis[j]&&dis[j]<minl){
minl=dis[j];
sta=j;
}
}
if(sta==-) return -;
vis[sta]=;
ans+=minl;
for(int j=;j<n;j++){
if(vis[j]&&j!=sta)
maxl[sta][j]=maxl[j][sta]=max(maxl[pre[sta]][j],dis[sta]);
else if(!vis[j]&&dis[j]>mp[sta][j]){
dis[j]=mp[sta][j];
pre[j]=sta;
}
}
}
return ans;
}
double Smst(double ans){
double tmp=;
for(int i=;i<n-;i++){
for(int j=i+;j<n;j++){
tmp=max(tmp,(w[i]+w[j])/(ans-maxl[i][j]));
}
}
return tmp;
}
int main()
{
scanf("%d",&t);
while(t--){
scanf("%d",&n);
for(int i=;i<n;i++){
scanf("%lf%lf%lf",&x[i],&y[i],&w[i]);
mp[i][i]=;
for(int j=;j<i;j++)
mp[i][j]=mp[j][i]=sqrt((x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j]));
}
double ans=Prim();
ans=Smst(ans);
printf("%.2lf\n",ans);
}
return ;
}
UVALive - 5713 最小生成树的更多相关文章
- 训练指南 UVALive - 5713(最小生成树 + 次小生成树)
layout: post title: 训练指南 UVALive - 5713(最小生成树 + 次小生成树) author: "luowentaoaa" catalog: true ...
- 最小生成树求最大比率 UVALive - 5713
题目链接:https://vjudge.net/problem/UVALive-5713 题意:给出t组数据,每组数据第一行给出一个n,表示点的数量,接下来n行,每行有三个数字,分别是点的坐标x,y和 ...
- UVALive 5713 Qin Shi Huang's National Road System秦始皇修路(MST,最小瓶颈路)
题意: 秦始皇要在n个城市之间修路,而徐福声可以用法术位秦始皇免费修1条路,每个城市还有人口数,现要求徐福声所修之路的两城市的人口数之和A尽量大,而使n个城市互通需要修的路长B尽量短,从而使得A/B最 ...
- UVALive 5713 Qin Shi Huang's National Road System(次小生成树)
题意:对于已知的网络构建道路,使城市两两之间能够互相到达.其中一条道路是可以免费修建的,问需要修建的总长度B与免费修建的道路所连接的两城市的人口之和A的比值A/B最大是多少. 因为是求A/B的最大值, ...
- UValive 5713 Qin Shi Huang's National Road System
Qin Shi Huang's National Road System Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/3 ...
- UESTC 2016 Summer Training #6 Div.2
我好菜啊.. UVALive 6434 给出 n 个数,分成m组,每组的价值为最大值减去最小值,每组至少有1个,如果这一组只有一个数的话,价值为0 问 最小的价值是多少 dp[i][j] 表示将 前 ...
- 最小生成树 prime算法 UVALive - 6437
题目链接:https://vjudge.net/contest/241341#problem/D 这里有多个发电站,需要求出所有点都和发电站直接或间接相连的最小代价,那么就是求出最小生成树的问题了,有 ...
- UVALive - 2515 (最小生成树 kruskal)
You are assigned to design network connections between certain points in a wide area. You are given ...
- UvaLive 4872 Underground Cables (最小生成树)
题意: 就是裸的最小生成树(MST), 完全图, 边长是实数. 分析: 算是复习一下MST把 方法一: prim 复杂度(n^2) #include <bits/stdc++.h> usi ...
随机推荐
- 【Linux 运维】 Centos7.x 系统修复模式
一.linux的运行级别: 运行级别就是来确定系统启动时到底启动那个服务. linux默认有7个运行级别: 0 关机 1 单用户模式,用于系统修复 2 不完全的命令模式,不含NFS服务 3 完全的命令 ...
- 【RL系列】Multi-Armed Bandit笔记补充(一)
在此之前,请先阅读上一篇文章:[RL系列]Multi-Armed Bandit笔记 本篇的主题就如标题所示,只是上一篇文章的补充,主要关注两道来自于Reinforcement Learning: An ...
- 创新手机游戏《3L》开发点滴(1)——道具、物品、装备表设计
一.游戏物品/道具系统数据模型设计特点 为了让游戏更加的丰富,我们1201团队的新手机游戏设计了道具系统.于是丰富了游戏.取悦了玩家,哭了开发——道具/物品数据子系统是简单的.复杂的.不确定的: 简单 ...
- Alpha 冲刺2
队名:日不落战队 安琪(队长) 今天完成的任务 组织第二次站立式会议. 完成40%个人信息前端界面. 明天的计划 完成剩下的60%个人信息前端界面. 还剩下的任务 个人信息修改前端界面. 遇到的困难 ...
- LintCode-71.二叉树的锯齿形层次遍历
二叉树的锯齿形层次遍历 给出一棵二叉树,返回其节点值的锯齿形层次遍历(先从左往右,下一层再从右往左,层与层之间交替进行) 样例 给出一棵二叉树 {3,9,20,#,#,15,7}, 返回其锯齿形的层次 ...
- 【week2】Scrum中的站立会议
Scrum站立会议 站立会议给我的第一印象就是站着开会,在经过我查阅资料之后,发现也是差不多的意思.学术一点的分析就是在Sprint开始后,团队将会在每个工作日特定时间举行一个简短会议,每次会议 ...
- Ubuntu启用root账号登录系统
使用root账号登陆Ubuntu系统,实现起来本身没啥难度,运行passwd root即可,然后在/etc/ssh/sshd_config里面修改PermitRootLogin yes即可.不过研究的 ...
- AMH面板命令操作大全
LNMP面板 - AMH 命令使用nginx篇 » SSH Nginx1) 有步骤提示操作: ssh执行命令: amh nginx然后选择对应选项进行操作. 2) 或直接操作: 启动Nginx: am ...
- QT分析之网络编程
原文地址:http://blog.163.com/net_worm/blog/static/127702419201002842553382/ 首先对Windows下的网络编程总结一下: 如果是服务器 ...
- 【问题解决】Project facet Java version 1.7 (或者1.8)is not supported.
在移植eclipse项目时,如果遇到 “Project facet Java version 1.7 is not supported.” 项目中的jdk1.7不支持.说明项目是其他版本jdk编译的, ...