神圣罗马帝国皇帝
来源:互联网 发布:java自定义泛型类 编辑:程序博客网 时间:2024/03/29 07:38
神圣罗马帝国皇帝
题目描述
中世纪的德意志,战火纷飞。
近来
在
他在
金天成凭借着强大的军事才能,卓越的领导能力,强势统一了德意志的大部分地区。
为他成为神圣罗马帝国的皇帝打下了坚实的基础!
现在,金天成需要加强自己统治区域内的运输,他现在有
金天成希望有一种方案,使得维护最少的道路让
并且选取出来的道路集合 S 的评估指数
最大!
由于他日理万机,所以这件事情他就让你来做了……
输入格式
第一行两个数字
接下来
表示
输出格式
输出一行,表示所有道路选取方案中最大的评估指数。保留
样例输入
3 3
1 2 2 3 2 3 1 1 1
样例输出
2.000000
样例解释
总共三种选法{边 1,边 2},{边 2,边 3},{边 3,边 1},然后评估值分别为
最大评估值为
数据范围
Solution
同 冒险岛。
首先二分答案
即
所以求最小生成树就可以啦!
Code
#include <iostream>#include <cstdio>#include <algorithm>using namespace std;int n,m,fa[10010],cnt;const double maxn=1e+8*5; struct Edge{int l,r,c,d;}edge[50010];struct Rdge{int l,r;double c;}rdge[50010];bool cmp(const Rdge &x,const Rdge &y){return x.c>y.c;} int find(int x){ int tmp=x,pre; while(tmp!=fa[tmp])tmp=fa[tmp]; while(x!=tmp){ pre=fa[x];fa[x]=tmp;x=pre; } return tmp;}bool judge(double x){ double sub=0; for(int i=1;i<=m;i++){ rdge[i].l=edge[i].l; rdge[i].r=edge[i].r; rdge[i].c=edge[i].c-edge[i].d*x; } for(int i=1;i<=n;i++)fa[i]=i; sort(rdge+1,rdge+m+1,cmp); cnt=0; for(int i=1;i<=m&&cnt<n-1;i++){ int fl=find(rdge[i].l),fr=find(rdge[i].r); if(fl!=fr){cnt++;fa[fl]=fr;sub+=rdge[i].c;} } return sub>=0;}double binary(double l,double r){ while(r-l>=1e-8){ double mid=(l+r)/2; if(judge(mid))l=mid; else r=mid; } return l;}int main(){ freopen("emperor.in","r",stdin); freopen("emperor.out","w",stdout); scanf("%d%d",&n,&m); for(int i=1;i<=m;i++){ scanf("%d%d%d%d",&edge[i].l,&edge[i].r,&edge[i].c,&edge[i].d); } printf("%.6lf\n",binary(0,maxn)); return 0;}
- 神圣罗马帝国皇帝
- 神圣罗马帝国皇帝
- 神圣罗马帝国
- 明朝皇帝
- 地铁债券、打工皇帝
- 每月31日-皇帝
- 做皇帝的游戏
- 皇帝新脑评述
- “篮球皇帝”张伯伦
- 唐朝皇帝表
- 打工皇帝BreettHo
- 明朝的皇帝们
- 极品皇帝最新章节
- 皇帝选后
- 从民工到皇帝
- 皇帝的旧衣
- 《皇帝内经》养生法则
- 黑客皇帝阿桑奇
- TortoiseSVN 合并操作简明教程
- 滑动窗口的最大值
- HDU 1372 Knight Moves 【经典BFS】
- swiper的基础使用(十四)
- div css图片列表实例
- 神圣罗马帝国皇帝
- UIPopoverController
- 【矩阵乘法】[NOI2013]向量内积
- RecycleView 仿支付宝实现item拖动效果
- Irrlicht学习笔记(7.2)--Collision
- MySQL 触发器简单实例
- 类集框架List
- swiper的基础使用(十五)
- redis源码分析-sds字符串