HDU 4081 Qin Shi Huang's National Road System(次小树,4级)

hdu 4081 Qin Shi Huang's National Road System 最小生成树 Qin Shi Huang's National Road System Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 515 Accepted Submission(s): 208 Problem Description D 阅读详情

A - Qin Shi Huang's National Road System
Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u
Appoint description: 

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

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 road system. There is a story about the road system: 
There were n cities in China and Qin Shi Huang wanted them all be connected by n-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 road system may not cost too many people's life. A daoshi (some kind of monk) named Xu Fu told Qin Shi Huang that he could build a road by magic and that magic road would cost no money and no labor. But Xu Fu could only build ONE magic road for Qin Shi Huang. So Qin Shi 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 of A/B (the ratio of A to B) must be the maximum, which A is the total population of the two cites connected by the magic road, and B 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 are t test cases(t <= 10). 
For each test case: 
The first line is an integer n meaning that there are n cities(2 < n <= 1000). 
Then n lines follow. Each line contains three integers X, Y and P ( 0 <= X, Y <= 1000, 0 < P < 100000). (X, Y) is the coordinate of a city and P 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
思路:次小树差不多

#include<cstdio>
#include<cstring>
#include<iostream>
#include<cmath>
#include<queue>
#include<algorithm>
#define FOR(i,a,b) for(int i=a;i<=b;++i)
#define clr(f,z) memset(f,z,sizeof(f))
using namespace std;
const int mp=1009;
const double oo=1e18;
class Edge
{
public:
  int v,next;double w;
};
class _point
{
  public:double x,y;int w;
  double get_dis(_point t)
  {
    return sqrt((x-t.x)*(x-t.x)+(y-t.y)*(y-t.y));
  }
}p[mp];
class MST_tree
{
public:
  int head[mp],edge;
  double edge_max[mp][mp],dis[mp];
  Edge e[mp*mp*2];
  int n;
  bool vis[mp];
  int pre[mp];///x's father
  void clear()
  {
    clr(head,-1);edge=0;
  }
  void add(int u,int v,double w)
  {
    e[edge].v=v;e[edge].w=w;e[edge].next=head[u];head[u]=edge++;
  }
  double prim()
  {
    FOR(i,0,n)dis[i]=oo,vis[i]=0;
    FOR(i,0,n)FOR(j,0,n)edge_max[i][j]=0;
    int v;
    for(int i=head[1];~i;i=e[i].next)
    { v=e[i].v;
      dis[v]=min(dis[v],e[i].w);
    }
    int best;double MAX;
    double MST=0;
    vis[1]=1;dis[1]=0;
    FOR(i,0,n)pre[i]=1;
    FOR(i,2,n)
    {
      best=-1;MAX=oo;
      FOR(j,1,n)
      if(!vis[j]&&dis[j]<MAX)
        MAX=dis[j],best=j;
      vis[best]=1;MST+=MAX;
      for(int j=head[best];~j;j=e[j].next)///get max_tree_edge
      {
        v=e[j].v;
        if(vis[v])///visted
        {
          if(edge_max[v][ pre[best] ]<dis[best])
          {
            edge_max[v][ best ]=edge_max[ best ][v]=dis[best];
          }
          else
          {
            edge_max[v][ best ]=edge_max[ best ][v]=edge_max[ v ][ pre[best] ];
          }
        }
      }
      for(int j=head[best];~j;j=e[j].next)
      {
        v=e[j].v;
        if(vis[v])continue;
        if(dis[v]>e[j].w)
        {dis[v]=e[j].w;
         pre[v]=best;
        }
      }
    }
    return MST;
  }
  void get_ans()
  { int v;
    double MST=prim();
    double ans=0,A;
    for(int i=1;i<=n;++i)
      for(int j=head[i];~j;j=e[j].next)
    {
      v=e[j].v;
      A=p[v].w+p[i].w;
      ans=max(ans,A/(MST-edge_max[i][v]));
    }
    //cout<<ans<<endl;
    printf("%.2lf\n",ans);
  }
}sp;
int main()
{
  int cas;
  while(~scanf("%d",&cas))
  {
    while(cas--)
    {
      int n;
      scanf("%d",&n);sp.n=n;
      sp.clear();
      FOR(i,1,n)
      {
        scanf("%lf%lf%d",&p[i].x,&p[i].y,&p[i].w);
      }
      FOR(i,1,n)FOR(j,i+1,n)
      { double dis=p[i].get_dis(p[j]);
//        cout<<i<<" -> "<<j<<" "<<dis<<endl;
        sp.add(i,j,dis);sp.add(j,i,dis);
      }
     // cout<<sp.prim()<<endl;
      sp.get_ans();
    }
  }
}




单细胞RNA测序数据分析与可视化:从基础原理到高级应用 单细胞RNA测序(scRNA-seq)技术通过解析单个细胞的基因表达谱,显著提升了我们对细胞异质性的理解。本文详细介绍了scRNA-seq数据分析的完整流程,包括数据预处理、质量控制、降维、聚类、差异表达分析、细胞类型注释、细胞周期分析、轨迹分析、RNA速率分析、基因集富集分析、细胞通讯分析、批次效应校正以及空间转录组学整合。文章还展示了scrna_toolkit包在简化分析流程和增强数据可视化方面的应用。通过这一工具,研究者可以更高效地处理单细胞数据,揭示复杂的生物学信息。未来,该工具将进一步整合多组学分 阅读详情

相关推荐

UnityWebGL异常捕获全攻略:从报错提示到完美解决的3种配置方案

本文详细解析了UnityWebGL项目中异常捕获的三种核心配置方案:禁用异常、仅捕获显式异常以及完全捕获异常(无堆栈跟踪)。通过对比不同方案在构建体积、运行性能及错误信息详细度上的差异,帮助开发者根据开发、测试与发布阶段的不同需求,选择并配置最优的异常处理策略,从而有效提升WebGL应用的调试效率和线上稳定性。

5f4d3s2a1q的博客 398

HDOJ 4081: Qin Shi Huang's National Road System

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4081 题目大意: 求一个图的生成树, 可以指定一条边为“魔法边”,使其边权变为0。 在此基础上,要求  “ '魔法边' 连接的两点的点权 / 生成树上其它边的边权"  最大。 算法: 首先,一定是在最小生成树上去掉一条边,然后在被分成的两部分间加上一条边。 因为把

frog的小池塘 1469

OpenCode:终端开源AI编程助手,多模型接入与实战指南

AI编程助手正在从IDE侧边栏走向终端环境。其核心原理是让模型直接读取项目文件、执行命令、查看报错,形成从诊断到修复的完整闭环,从而解决传统插件上下文割裂的问题。技术价值在于开源透明、模型无关,既可接入OpenAI等云端服务,也能通过Ollama连接本地模型,兼顾数据安全与离线场景。在工程实践中,它适用于长时间驻留项目、自动修Bug、团队统一AI工具链等需求。OpenCode正是这样一款终端AI助手,支持灵活配置第三方API密钥,提供免费档与Go套餐,并通过Skills技能系统让模型遵循标准操作流程。同时,

weixin_28745821的博客 327

HDOJ-4081(次小生成树+Prim算法)

Qin Shi Huang's National Road System HDOJ-4081 本题考查的是次小生成树的问题,这里的解决方法就是先使用Prim算法求解最小生成树。 在求解最小生成树的时候通过一个数组记录每一对顶点之间的路径上长度最长的一条边。这个由一个cost数组记录。 最后,再依次遍历每一对顶点,如果这对顶点不在最小生成树里面,则直接去掉这条边改成魔法边。否则就将这对顶...

162

Skyworks SKY85331-11的Wi-Fi 6 (802.11ax)标准 2.4G 高功率WLAN前端模块解决方案

SKY85331-11是高度集成的2 GHz前端模块(FEM)包含2 GHz单刀双掷(SPDT)发送/接收(T / R)开关,2 GHz低噪声放大器(LNA)带旁路和一个2 GHz功率放大器(PA),用于大功率802.11ax应用程序和系统LNA和PA禁用功能可确保低漏电流 关闭模式。 包括一个集成的功率检测器以提供系统内的闭环功率控制。该设备提供Small (24-pin, 3 x 5 mm) (LGA)封装。 图1.引脚配置和封装如图所示 图2.信号引脚分配和功能引脚描述 图...

zhangbao19890622的博客 4505

力软敏捷开发框架源码7.0.6旗舰版 JNPF开发平台3.4.5 企业版 旗舰版

JNPF作为作为一款深受用户喜爱的低代码产品,凭借雄厚的科研技术力量、丰富的软件开发项目经验、严谨的项目开发流程和高质量的售后服务,已成功帮助千家企业完成数字化项目,建立了覆盖不同行业客户和不同发展阶段的软件产品服务体系。

huoooos0的博客 1839

hdoj 4081 Qin Shi Huang's National Road System 【次小生成树变形】

Qin Shi Huang's National Road System Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 5200    Accepted Submission(s): 1811 Problem De

世界很大 636

iOS中.obj、.usdz、.dae和.scn格式之间的转化(思路清晰版)

作者最近在写项目的过程中遇到了一些3d模型格式问题,故写下这篇文章记录一下解决问题的过程。

yueliangmua的博客 5586

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

Qin Shi Huang's National Road System 题目链接:Click Here~ 题目重述:     题目说秦始皇要修路,把N个城市用N-1条边连通。且他希望花费最小,但是这时候有一个多管闲事的道士出来说他有魔法可以帮助秦始皇变成一条路,但是只能变出一条。但是,两个人对修路的法案存在歧义,道士希望修路可以给更多的百姓带来福利,而秦始皇希望修路要尽量使花费小。

YouthDance 1190

Oracle EBS Interface/API(49)- AP付款取消API

Oracle EBS AP付款取消API介绍和简单实例

陈显平的专栏-Oracle EBS 850

Android软键盘系统深度解析:架构、原理与实现

Android软键盘系统深度解析:架构与实现原理 本文系统剖析了Android软键盘的核心工作机制。作为系统级输入服务,软键盘具有双重属性:既是可安装的独立应用,又深度集成于系统框架中。文章详细解读了软键盘的系统架构,包括其与InputMethodManagerService(IMMS)和WindowManagerService(WMS)的交互机制,以及通过InputConnection实现的跨进程通信流程。同时分析了输入法窗口的特殊管理策略、布局调整模式,并深入探讨了输入预测引擎的实现原理,包括词典加载、

保持专注,保持热爱 115

[HDU 4081] Qin Shi Huang's National Road System 最小树

http://acm.hdu.edu.cn/showproblem.php?pid=4081题意:输入一个 n , 表示有 n 个 城市,然后输入x, y, v, 分别表示地 i 个城市的坐标和人口数, 现在要修路n-1 条路,让每个城市都连通。可以用魔法变出一条路。求这条路的两端点的 总人数 / (包含这条边的最小生成树的总权值) 最大值。

AcmHonor的专栏 509

YOLOv8 改进:添加 LSK 注意力机制

通过添加 LSK 注意力机制,YOLOv8 能够更有效地捕捉特征图上的重要信息,提高检测性能,尤其是在复杂场景下展现出色的表现。这种方法不仅适用于资源受限的设备,还能在丰富多样的实际应用中提供强劲支持。

走向CTO的路上... 1221

《盗墓笔记》解密

晚上看《老九门》的时候突然兴致起来想看一下《盗墓笔记》,毕竟是为数不多的喜欢的小说,想到前一段时间朋友说的关于《盗墓笔记》中的坑的解密,就去网上找了一份,保存下来23333《盗墓笔记》完整解谜(什么是终极?闷油瓶的身世之谜,和无邪长得一模一样的人到底是谁,真正的三叔去了哪里?秦岭神树的作用。。。所有的答案都在这里!纪念笔记陪伴的着六年) 来源: 李星羽@的日志《盗墓笔记》解谜! 最终整理版!!《盗墓

滴水穿石,慢慢积累,总会有成果 8201

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

HDU 4081 生成树

http://acm.hdu.edu.cn/showproblem.php?pid=4081 题意:给定点坐标求最小生成树,可以让一条路距离变为0,现在要使得选择的这条路端点点权之和/这条路为0的最小生成树边权之和的值最大。 题解:求次小生成树后产生数组length[x][y]表示从x到y走最小生成树途中经过的最长的一条边。然后枚举每条边,就可以了。 代码: #include &lt;i...

编程路漫漫 286

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

hdu4081 Qin Shi Huang's National Road System

题目大意就是说,n个城市,修成一棵树,其中有一条边是可以用魔法的,这条边是不需要计费的,每个城市有住人,问修完所有的边的总路程是B,那条魔法修建边链接的两个城市的人口是A,求A/B的最大值。 分析:一开始就能想到的是B小、A大。因为是修成树,所以B开始就直接是最小生成树的值了,同时记录两点路径上的最大边权。在就是枚举修建的魔法边,然后删掉两点间的最大边权值(前有做记录),这是直接算就是了,取最大

KIJamesQi的博客 433

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

九度OJ 1249:次小生成树 (次小生成树)

时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:203 解决:56 题目描述: 最小生成树大家都已经很了解,次小生成树就是图中构成的树的权值和第二小的树,此值也可能等于最小生成树的权值和,你的任务就是设计一个算法计算图的最小生成树。 输入: 存在多组数据,第一行一个正整数t,表示有t组数据。 每组数据第一行...

weixin_30399155的博客 138

HDOJ 4081

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4081 -———————————————————————————————————————————————— 题目关键字: memset 、 prim ———————————————————————————————————————————————— 题目描述: 无向完全图,有n个点,每个点有个点

相濡以沫的专栏 882

hduoj 4081 并查集 次小生成树 kruscal算法

部分代码没有用,只是为了测试 vector都没有用到 #include &lt;iostream&gt; #include &lt;cstdio&gt; #include &lt;cstring&gt; #include &lt;vector&gt; #include &lt;algorithm&gt; #include &lt;set&gt; #define DEBUG 1 #def...

paulcess的博客 276

Cisco设备配置AAA认证!

实验设备: cisco 3640路由器1台,PC一台,Console线缆一根,交叉线一根 实验拓扑: 实验过程: 第一步:通过console线缆,使用超级终端或者SecureCRT登录路由器,完成基本配置,同时将交叉线连接到路由器E1/0,t在PC的接口上配置IP为192.168.10.1,掩码255.255.255.0 Router&gt;enable...

weixin_33892359的博客 1957

HDU 4081 秦始皇修路 次小生成树

注意精度问题,不要用强转。   #include #include #include #include #include #include #define N 1010 #define INF 0x3f3f3f3f using namespace std; int n; double x[N],y[N]; double dis[N][N]; doub

九野的博客 2080

刷题总结——次小生成树(bzoj1977 最小生成树+倍增)

题目: Description 小 C 最近学了很多最小生成树的算法,Prim 算法、Kurskal 算法、消圈算法等等。 正当小 C 洋洋得意之时,小 P 又来泼小 C 冷水了。小 P 说,让小 C 求出一个无向图的次小生成树,而且这个次小生成树还得是严格次小的,也就是说: 如果最小生成树选择的边集是 EM,严格次小生成树选择的边集是 ES,那么需要满足:(value(e) 表...

banzhangzhi8819的博客 178

HDU 4081 最小生成树变形

这道题我一开始的想法就是对的,记录任意两点路径上的最大边权,然后枚举两点,找到A/B的最大值。 关键是这个记录真不好记录,想来想去没什么想法,代码能力还是太弱了,想到了先生成树再来记录什么的, 觉得复杂度好高,还是觉得PRIM在加边的过程中就直接记录了,想了很久,后来才想通,开一个一维数组记录 它的父节点再开一个二维数组记录DP[I][J],I->J的路径上的最大边权,每加入一点,就在已

lentty1452的专栏 635

hdu4081 Qin Shi Huang's National Road System PRIM+dp

代码1: #include #include #include #include #include using namespace std; const int N = 1000 + 10; const double INF = 1.0*1e8; struct point { double x,y; double val; }p[N]; double get_dis(point

alpc_wt的专栏 513

枚举+最小生成树 hdoj4081 Qin Shi Huang's National Road System

题目传送门:http://acm.hdu.edu.cn/showproblem.php?pid=4081题目大意是给你一个图,既有点权又有边权,求一个生成树,你可以任选其中一条边,使它的边权为0,最终使得边权为0的两点的点权和/剩余边的边权和 最小。我们可以这样思考,从最小生成树中去掉一条边,剩余的两个连通分量用边权为0的边链接。这样是正确的,因为如果你要选择两个点并用0边把它们连接起来,意味着需要

nNbS 439

hdoj-畅通工程类练习题(kruskal算法and最小生成树)

HDU1863 畅通工程---(最小生成树) 省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可)。经过调查评估,得到的统计表中列出了有可能建设公路的若干条道路的成本。现请你编写程序,计算出全省畅通需要的最低成本。  Input 测试输入包含若干测试用例。每个测试用例的第1行给出评估的道路条数 N、村庄数目M ( &lt; ...

文静是个小菜鸟的博客 401
上一篇: UVALive 3887 Slim Span(枚举+MST,4级)
下一篇: UVA 11865 Stream My Contest(最小树形图,4级)
剑不飞
博客等级 码龄15年 86粉丝 505原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值