题目

Wayne 在玩儿一个很有趣的游戏。在游戏中,Wayne 建造了N 个城市,现在他想在这些城市间修一些公路,当然并不是任意两个城市间都能修,为了道路系统的美观,一共只有M 对城市间能修公路,即有若干三元组(Ui, Vi,Ci) 表示Ui 和Vi 间有一条长度为Ci 的双向道路。当然,游戏保证了,若所有道路都修建,那么任意两城市可以互相到达。

Wayne 拥有恰好N - 1 支修建队,每支队伍能且仅能修一条道路。当然,修建长度越大,修建的劳累度也越高,游戏设定是修建长度为C 的公路就会有C 的劳累度。当所有的队伍完工后,整个城市群必须连通,而这些修建队伍们会看看其他队伍的劳累情况,若劳累情况差异过大,可能就会引发骚动,不利于社会和谐发展。Wayne 对这个问题非常头疼,于是他想知道,这N - 1 支队伍劳累度的标准差最小能有多少。

分析

注意到N<=100,M <= 2000,数据很小。

于是,正解就是愉愉快快地大暴力。

不过,暴力也是没那么容易想出来滴。

首先,枚举这N-1个数的平均数p,因为要使\(\sqrt{\dfrac{\sum_{0<=i<n}(c_{i}-\overline{c})^{2}}{n-1}}\)尽量小,显然要使\(\sum_{0<=i<n}(c_{i}-\overline{c})^{2}\)尽量小。那么以\(|c_{i}-p|\)作为树的边权,做一遍最小生成树,并记录下最小生成树的边。

但是,我们知道最小生成树的边的\(\overline{c}\)并不一定等于p。所以,把最小生成树的边重新求一遍平均值,再算答案。

真是又黄又暴力!

  1. #include <cmath>
  2. #include <iostream>
  3. #include <cstdio>
  4. #include <cstdlib>
  5. #include <cstring>
  6. #include <algorithm>
  7. #include <queue>
  8. const int maxlongint=2147483647;
  9. using namespace std;
  10. struct ddx
  11. {
  12. double f,g;
  13. int x,y;
  14. }a[12000];
  15. int b[12000],n,m,d[12000],tot;
  16. bool cmp(ddx x,ddx y)
  17. {
  18. return x.f<y.f;
  19. }
  20. int getfa(int x)
  21. {
  22. if(b[x]==x) return x;
  23. int g=getfa(b[x]);
  24. b[x]=g;
  25. return g;
  26. }
  27. int main()
  28. { scanf("%d%d",&n,&m);
  29. for(int i=1;i<=m;i++)
  30. {
  31. scanf("%d%d%lf",&a[i].x,&a[i].y,&a[i].g);
  32. }
  33. double ans=maxlongint;
  34. for(double i=0.1;i<=100;i+=0.25)
  35. {
  36. for(int j=1;j<=n;j++)
  37. {
  38. b[j]=j;
  39. }
  40. for(int j=1;j<=m;j++)
  41. {
  42. a[j].f=abs(a[j].g-i);
  43. }
  44. sort(a+1,a+m+1,cmp);
  45. double sum=0;
  46. tot=0;
  47. for(int j=1;j<=m,tot<n-1;j++)
  48. {
  49. int x=getfa(a[j].x);
  50. int y=getfa(a[j].y);
  51. if(x!=y)
  52. {
  53. b[x]=y;
  54. d[++tot]=j;
  55. }
  56. }
  57. double g=0;
  58. for(int j=1;j<=tot;j++)
  59. {
  60. g+=a[d[j]].g;
  61. }
  62. g/=n-1;
  63. for(int j=1;j<=tot;j++)
  64. {
  65. sum+=(g-a[d[j]].g)*(g-a[d[j]].g);
  66. }
  67. ans=min(ans,sum);
  68. }
  69. printf("%.4lf\n",sqrt(ans/(n-1)));
  70. }

【GDOI2014模拟】Tree的更多相关文章

  1. 【GDOI2014模拟】JZOJ2020年8月14日提高组 服务器

    [GDOI2014模拟]JZOJ2020年8月14日提高组 服务器 题目 Time and Memory Limits Description 我们需要将一个文件复制到n个服务器上,这些服务器的编号为 ...

  2. 【GDOI2014模拟】JZOJ2020年8月14日T2 网格

    [GDOI2014模拟]JZOJ2020年8月14日T2 网格 题目 Time and Memory Limits Description 某城市的街道呈网格状,左下角坐标为A(0, 0),右上角坐标 ...

  3. 【GDOI2014模拟】雨天的尾巴

    题目 深绘里一直很讨厌雨天. 灼热的天气穿透了前半个夏天,后来一场大雨和随之而来的洪水,浇灭了一切. 虽然深绘里家乡的小村落对洪水有着顽固的抵抗力,但也倒了几座老房子,几棵老树被连 根拔起,以及田地里 ...

  4. [JZOJ3400] 【GDOI2014模拟】旅行

    题目 题目大意 给你一个图,让你选择权值和最小的边,使得\(1\)和\(n\),\(2\)和\(n-1\),--,\(K\)和\(n-K+1\)联通. \(K\leq 4\) 思考历程 一看到这题就觉 ...

  5. GDOI2014模拟pty爬山(mountain)

    pty爬山(mountain) 在Pty学校附近,有一座名之为岳之麓的高山.Pty很喜欢和(哔--)一起爬山.山的平面模型如下:山由一个顶点集:A1,A2-An给定,保证Ai的x单调递增.我们将Ai和 ...

  6. GDOI2014模拟 旅行【SPFA】

    旅行(travel) 从前有一位旅者,他想要游遍天下所有的景点.这一天他来到了一个神奇的王国:在这片土地上,有n个城市,从1到n进行编号.王国中有m条道路,第i条道路连接着两个城市ai,bi,由于年代 ...

  7. 【GDOI2014模拟】服务器

    前言 直到比赛最后几分钟,才发现60%数据居然是一个水dp,结果没打完. 题目 我们需要将一个文件复制到n个服务器上,这些服务器的编号为S1, S2, -, Sn. 首先,我们可以选择一些服务器,直接 ...

  8. 【GDOI2014模拟】网格

    题目 某城市的街道呈网格状,左下角坐标为A(0, 0),右上角坐标为B(n, m),其中n >= m.现在从A(0, 0)点出发,只能沿着街道向正右方或者正上方行走,且不能经过图示中直线左上方的 ...

  9. [JZOJ3402] 【GDOI2014模拟】Pty的字符串

    题目 给你一棵每条边从父亲指向儿子的树,每条边上面有一个字母. 从树上的任意一点出发,走出的路径就是对应一个子串. (这不是\(Trie\),因为每个父亲可能会连出字母相同的边) 再给你一个字符串\( ...

随机推荐

  1. OpenStack Rally 质量评估与自动化测试利器

    目录 文章目录 目录 问题描述 Rally 简介 应用场景 应用案例 Rally 安装 Rally 使用 Rally 架构 Rally Plugin 分析与实现 程序入口 执行 rally task ...

  2. oracle expdp/impdp/可传输表空间

    oracle expdp/impdp/可传输表空间/及一些参数 Oracle data pump 导出操作能够将表.索引.约束.权限.PLSQL包.同义词等对象从数据库导出,并将它们保存在一种非文本格 ...

  3. win10安装Tensorflow1.9GPU版本

    前言 看到DateWhale出了一篇安装教程(微信公众号DateWhale),决定体验一下Tensorflow1.9的GPU版本..其实一开始装的是2.0,但是tf.Session()就报错了,说是2 ...

  4. 应用安全 - Web框架 - 数据库管理 - phpMyAdmin - 漏洞汇总

    CVE-2019-18622 Date: 2019.10.28 类型: SQL injection in Designer feature 影响范围: phpMyAdmin versions prio ...

  5. 5.使用github脚本LAZY----几个最好的发行版----自定义终端----基本命令

    使用现成的脚本 LAZY * 如果您不想手动设置,可以用这个脚本帮您设置 访问:github.com/arismelachroinos/lscript sudo apt-get git git clo ...

  6. 如何在centos7中显示/etc/目录下以非字母开头,后面跟了一个字母及其它任意字符的文件或目录

    ls /etc |grep "^[^[:alpha:]][[:alpha:]].*"

  7. Nginx代理自动上线下线

    Nginx基于连接探测,如果发现后端异常,在单位周期为fail_timeout设置的时间,中达到max_fails次数,这个周期次数内,如果后端同一个节点不可用,那么接将把节点标记为不可用,并等待下一 ...

  8. [转帖]NetSuite 进入中国市场满一年,甲骨文公布首份成绩单

    NetSuite 进入中国市场满一年,甲骨文公布首份成绩单 https://baijiahao.baidu.com/s?id=1617073148682281883&wfr=spider&am ...

  9. js分页加载数据

    <script type="text/javascript"> $(function(){ $.ajax({ type: "post", dataT ...

  10. Linux安装Jenkins并部署springboot项目

    安装步骤: 1.跳转连接https://pkg.jenkins.io/redhat-stable/下载安装包 2.安装命令: sudo rpm -ih jenkins-2.73.2-1.1.noarc ...