题意

平面上有 \(N\) 个城市和 \(M\) 个乡村,一开始没有任何的道路

为了改善这个局面,主席决定采取一些策略使得每个乡村都能连接到至少一个城市

当存在一个乡村与任何城市都没有联系时,执行如下操作

  1. 随机挑选一个未联系的乡村 \(V\)

  2. 选择离 \(V\) 最近(欧几里得距离)的一个已链接城市的乡村或者城市,如果有多个,满足条件的点,随机选择,假设选择的点为\(P\)

  3. 在 \(V\) 与 \(P\) 之间 建设一条道路

求期望需要修建多长的道路能使得所有的乡村都能直接或者间接的连接到城市

输入格式

第一行输入两个整数\(n,m (1≤n≤50,1≤m≤50)\)

接下来一行输入 \(n\) 个整数 \(cityX[i]\) 表示第 \(i\) 个城市的 \(x\) 坐标

接下来一行输入 \(n\) 个整数 \(cityY[i]\) 表示第 \(i\) 个城市的 \(y\) 坐标

接下来一行输入 \(m\) 个整数 \(villageX[i]\) 表示第 \(i\) 个乡村的 \(x\) 坐标

接下来一行输入 \(m\) 个整数 \(villageY[i]\) 表示第 \(i\) 个乡村的 \(y\) 坐标

所有的点的坐标都是唯一的

所有坐标的值都在 \(0\) 到 \(1000000\) 以内

输出格式

输出一个浮点数,误差在 \(1e−9\) 之内

样例输入&输出

样例1

1 2
3
0
3 3
2 12.5

样例2

4 4
1 4 7 10
5 5 5 5
1 4 7 10
4 4 4 44.0

样例3

3 3
1 2 3
4 4 4
4 5 6
4 4 44.166666666666667

分析

对于某一个村庄 \(i\) ,我们把其他村庄按距离从近到远排序,再逐个枚举,加上期望。当枚举到第一个城市 \(k\) 时即退出循环,因为连接比第一个城市远的任何村庄或城市都无意义。

对于图中的村庄1,2,3,4,5,我们考虑它们连接城市6的先后顺序。

  1. 2在1之前时连接的概率为 \(\frac{1}{2}\) ;

  2. 2在1之后时,(1) 3在1之前的概率为 \(\frac{1}{3}\) (要保证2->1->3,3在最前面), (2) 3在1之后再分类讨论4,5,然后求和即可。

我们发现,第 \(j\) 个村庄连上村庄 \(i\) 的概率为 \(\frac{1}{j(j+1)}\) 。最后还要加上村庄 \(i\) 直接连上枚举到的第一个城市 \(k\) 的概率(即 \(\frac{1}{k}\) )

本题卡精度,double is recommended.

Code

#include<cstdio>
#include<algorithm>
#include<cmath>
#define maxn 52
#define sqr(x) ((x)*(x))
#define dis2(p,q) (sqr(p.x-q.x)+sqr(p.y-q.y))
#define dis(p,q) sqrt(sqr(p.x-q.x)+sqr(p.y-q.y))
using namespace std;
struct point{double x,y;
}c[maxn],v[maxn];
struct status{double x,y;bool isc; //是否是城市
}t[maxn<<1];
double sum;
int n,m,i,j;
bool cmp(const status& p,const status& q){return dis2(v[i],p)==dis2(v[i],q)?p.isc<q.isc:dis2(v[i],p)<dis2(v[i],q); //如果距离相同,则村庄优先;否则按距离从近到远排序
}
int main(){scanf("%d%d",&n,&m);for(i=1;i<=n;i++)scanf("%lf",&c[i].x);for(i=1;i<=n;i++)scanf("%lf",&c[i].y);for(i=1;i<=m;i++)scanf("%lf",&v[i].x);for(i=1;i<=m;i++)scanf("%lf",&v[i].y);for(i=1;i<=m;i++){ //枚举每一个村庄int cnt=0;for(j=1;j<=n;j++){t[++cnt].x=c[j].x,t[cnt].y=c[j].y,t[cnt].isc=1;}for(j=1;j<=m;j++){if(i==j){continue;} //排除掉自己连自己的情况t[++cnt].x=v[j].x,t[cnt].y=v[j].y,t[cnt].isc=0;}sort(t+1,t+n+m,cmp);for(j=1;j<n+m;j++){if(t[j].isc){sum+=dis(v[i],t[j])/j; //加上连接城市的期望break;}sum+=dis(v[i],t[j])/(j*(j+1)); //加上连接村庄的期望}}printf("%.10lf",sum); //答案为所有村庄期望之和return 0;
}

转载于:https://www.cnblogs.com/BlogOfchc1234567890/p/9873265.html

XJOI 3864 农村连接城市相关推荐

  1. 农村包围城市的『快手』

    0 引子 坦白说,我其实在这周才下载快手,不是别的什么原因,纯粹是因为周末要做产品分享 :D.虽然像"扎心了老铁"."双击666"."没毛病" ...

  2. 本土自动驾驶Tier 1们的“农村包围城市”:先从商用车切入,再向乘用车拓展...

    交流群 | 进"传感器群/滑板底盘群"请加微信号:xsh041388 交流群 | 进"汽车基础软件群"请加微信号:Faye_chloe 备注信息:群名称 + 真 ...

  3. 高红冰:1个贫困县连接280个城市 电商减贫潜力巨大

    ,在贵阳举行的2017年电商减贫大会上,阿里巴巴集团副总裁.阿里研究院院长高红冰发布了<电子商务助力中国减贫--电商减贫与普惠发展研究报告>. 以下为演讲内容: 高红冰:各位领导.各位来宾 ...

  4. 城市地摊重燃人间烟火,农村赶集却快熄灭烟火

    (图片来源于网络) 文 | 易不二 来源 | 螳螂财经(ID:TanglangFin) 地摊经济一火,总有人想尝尝人间烟火. 比如较早释放地摊经济信号的成都,设置了3.6万个流动商贩的摊位,一夜之间实 ...

  5. 智能城市应用中的安全和隐私:挑战和解决方案

    Security and Privacy in Smart City Applications 智能城市的应用框架 智能应用 智能城市架构 智能城市中的安全和隐私问题 数据传感中的隐私泄露 数据存储和 ...

  6. 从城市到国家:多学科视角的城市复杂系统

    摘要 与城市一样,国家在很大程度上是人造的系统.尽管它们在地点和规模上有所不同,但城市和国家都是可识别的单位,具有独特的特征,是独立的(不能被分解成部分而不失去其特征或个性的系统).一个国家的历史与它 ...

  7. (转)农村生活的可行性分析报告!

    转自: http://2361456.qzone.qq.com/blog/1296139211 看的我心里痒痒的,可惜女友坚决的回应我: 别老忽悠我啦,我就砸北京啦! 唉,一声叹息,望村兴叹吧.. - ...

  8. 【时事观察】找寻城市发展的幸福之路

    城外的人想进来,城里的人想出去.今日中国的城镇化,正面临着这样的问题. 想进来,因为就业.保险.医疗.教育等资源,城市远比农村丰沛:想出去,则是因为污染.噪音.拥堵.压力,城里来得比农村更大. 我们究 ...

  9. 【研究报告】城市云脑,智慧城市2.0产生背后的深层原因,两个重要特征是关键

    作者:计算机博士,互联网进化论作者 刘锋 到2017年,智慧城市与脑的关键词不断涌现,在互联网云脑的研究基础上,城市云脑形成更为清晰的定义,从2009年智慧地球和智慧城市提出以来,经过8年时间,为什么 ...

  10. 5-35 城市间紧急救援 (25分) pat 数据结构

    题目连接 https://pta.patest.cn/pta/test/15/exam/4/question/862 5-35 城市间紧急救援   (25分) 作为一个城市的应急救援队伍的负责人,你有 ...

最新文章

  1. 【烦人的问题】有一天发现VSCode中自己的鼠标选择老是跨行选择多段代码,怎么都改不回来,而且用alt+shift+鼠标都无法切换,肿么办?
  2. typedef的作用
  3. apache虚拟机配置步骤和修改访问端口
  4. 将MathType公式转换为Word自带公式
  5. 【django】基础条件查询
  6. 发表论文的十条金玉良言
  7. 怎么打包图片_超简单的免费批量图片压缩技巧,只需3步
  8. 【SQL Server备份恢复】数据库恢复:对page header的恢复
  9. python爬虫网页中的图片_Python爬取网页中的图片(搜狗图片)详解
  10. 2021北京民营企业百强榜单发布 美团、水滴等公司入选
  11. 使用k8s安装minio
  12. Bailian2815 城堡问题【DFS】
  13. python数据容器专题
  14. bat打包成exe_拜托!看完这篇文章别再问我怎么Python打包成exe了!
  15. 期货反向跟单的四大跟单禁忌
  16. 扫地机器人的喋血江湖
  17. windows mysql 开启非3306端口
  18. mac电脑用计算机名共享打印机,MAC与Windows7共享打印机的设置方法
  19. 员工认可和奖励的力量
  20. 奉上——手机版个人财务管理软件

热门文章

  1. 引用使用_引用公文标题时,“”与《》正确使用法则
  2. 数学连乘和累加运算符号_2020中考数学 初中数学有理数计算(干货)
  3. python统计数据库中每个数的个数,如何统计每个数据库中每个集合中的文档数?...
  4. lnmp php 5.4,linux下搭建LNMP(linux+nginx+mysql+php)环境之php5.4安装
  5. OSGI嵌入tomcat应用服务器(gem-web)——资源下载
  6. recover/panic
  7. 边缘计算工作负载:虚拟机,容器还是裸机?
  8. 剑指offer第七天
  9. Lintcode 730 所有子集的和
  10. 19.浏览器Window服务($window)