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)

【Sample Output】
65.00
70.00
【题意】
秦国有n个城市构成,每个城市都有一定的人口。现在要修路,要求最终修成的路花费最少代价使得所有的城市都连通。然后修路的时候可以使用一个魔法,免去一条路的费用,最终结果要使使用了魔法的那条路两端的城市总人口数除以剩下所有路的长度最大。
/* ***********************************************
MYID : Chen Fan
LANG : G++
PROG : 4081
************************************************ */ #include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <queue>
#include <cmath>
#include <bitset> using namespace std; typedef struct pnod
{
int x,y,p;
} pnode;
pnode p[]; typedef struct nod
{
int a,b;
double c;
friend bool operator < (nod a,nod b)
{
return a.c>b.c;
}
} node; node edge[];
int start[],num[]; bool op(node a,node b)
{
if (a.a==b.a) return a.c<b.c;
else return a.a<b.a;
} node ntoh(int a,int b,double c)
{
node x;
x.a=a;
x.b=b;
x.c=c;
return x;
} double maxx[][];
bitset<> inway[]; double prim(int s,int n)
{
/**/
int list[],listail=;
list[]=s;
/**/
priority_queue<node> heap;
while (!heap.empty()) heap.pop();
bitset<> flag;
flag.reset();
flag[s]=;
double ans=;
memset(maxx,,sizeof(maxx));
for (int i=;i<num[s];i++) heap.push(edge[start[s]+i]); for (int i=;i<n;i++)
{
node now=heap.top();
heap.pop();
while (flag[now.b])
{
now=heap.top();
heap.pop();
}
/**/
for (int j=;j<=listail;j++)
{
maxx[list[j]][now.b]=max(maxx[list[j]][now.a],now.c);
maxx[now.b][list[j]]=maxx[list[j]][now.b];
}
listail++;
list[listail]=now.b;
/**/
flag[now.b]=true;
ans+=now.c;
for (int j=;j<num[now.b];j++)
if (!flag[edge[start[now.b]+j].b]) heap.push(edge[start[now.b]+j]);
} return ans;
} double getdis(int x,int y)
{
return sqrt((p[x].x-p[y].x)*(p[x].x-p[y].x)+(p[x].y-p[y].y)*(p[x].y-p[y].y));
} int main()
{
freopen("4081.txt","r",stdin); int t;
scanf("%d",&t);
for (int tt=;tt<=t;tt++)
{
int n;
scanf("%d",&n);
for (int i=;i<=n;i++) scanf("%d%d%d",&p[i].x,&p[i].y,&p[i].p); int m=;
for (int i=;i<=n;i++)
{
start[i]=m+;
num[i]=n-;
for (int j=;j<=n;j++)
if (i!=j)
{
m++;
edge[m].a=i;
edge[m].b=j;
edge[m].c=getdis(i,j);
}
} double sum=prim(,n); double ma=;
for (int i=;i<=m;i++)
{
double temp=(p[edge[i].a].p+p[edge[i].b].p)/(sum-maxx[edge[i].a][edge[i].b]);
if (ma<temp) ma=temp;
} printf("%.2f\n",ma);
} return ;
}
HDU 4081 Qin Shi Huang's National Road System 次小生成树变种的更多相关文章
- hdu 4081 Qin Shi Huang's National Road System (次小生成树的变形)
题目:Qin Shi Huang's National Road System Qin Shi Huang's National Road System Time Limit: 2000/1000 M ...
- HDU 4081 Qin Shi Huang's National Road System [次小生成树]
题意: 秦始皇要建路,一共有n个城市,建n-1条路连接. 给了n个城市的坐标和每个城市的人数. 然后建n-2条正常路和n-1条魔法路,最后求A/B的最大值. A代表所建的魔法路的连接的城市的市民的人数 ...
- HDU 4081 Qin Shi Huang's National Road System 最小生成树+倍增求LCA
原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=4081 Qin Shi Huang's National Road System Time Limit: ...
- 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/3 ...
- HDU 4081—— Qin Shi Huang's National Road System——————【次小生成树、prim】
Qin Shi Huang's National Road System Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/3 ...
- HDU4081 Qin Shi Huang's National Road System —— 次小生成树变形
题目链接:https://vjudge.net/problem/HDU-4081 Qin Shi Huang's National Road System Time Limit: 2000/1000 ...
- hdu 4081 Qin Shi Huang's National Road System 树的基本性质 or 次小生成树思想 难度:1
During the Warring States Period of ancient China(476 BC to 221 BC), there were seven kingdoms in Ch ...
- hdu 4081 Qin Shi Huang's National Road System(次小生成树prim)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4081 题意:有n个城市,秦始皇要修用n-1条路把它们连起来,要求从任一点出发,都可以到达其它的任意点. ...
- HDU - 4081 Qin Shi Huang's National Road System 【次小生成树】
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=4081 题意 给出n个城市的坐标 以及 每个城市里面有多少人 秦始皇想造路 让每个城市都连通 (直接或者 ...
随机推荐
- hr定位
css里写 <style> hr{ position:relative; top: 500px; } </style> 重要!!! hr不能绝对定位, 只能相对定位,所以 hr ...
- laravel使用多个数据库连接
1.配置.env文件 DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=database_name DB_USERNAME= ...
- Unable to chmod /system/build.prop.: Read-only file system
Unable to chmod /system/build.prop.: Read-only file system 只读文件系统 所以需要更改 使用下面的命令 mount -o remount,rw ...
- docker !veth
https://github.com/docker/docker/issues/11889
- (UE4) 动态加载DLL
目前还没有实现,实在搞不懂为什么,大概代码如下: //------------------------------------------------------------------------- ...
- LightOJ 1341 Aladdin and the Flying Carpet(整数拆分定理)
分析:题目并不难理解,就是一些细节上的优化需要我们注意,我在没有优化前跑了2000多MS,优化了一些细节后就是400多MS了,之前还TLE了好几次. 方法:将整数拆分为质因子以后,表达为这样的形式,e ...
- UIImage 和 UIImageView区别
// // ViewController.m // 06-UIImage 和 UIImageView // // Created by Stephen on 16/4/18. // Copyright ...
- android代码实现免提功能
初始化AudioManager: private static AudioManager audioManager; 实现免提功能方法 protected void setSpeekModle() { ...
- Chapter 1 First Sight——24
He looked away quickly, more quickly than I could, though in a flush of embarrassment I dropped my e ...
- Html基础详解之(CSS)
css选择器 CSS选择器用于选择你想要的元素的样式的模式. “CSS”列表示在CSS版本的属性定义(CSS1,CSS2,CSS3). CSS id和class选择器 <!DOCTYPE htm ...