今天在interview Street上面看到一个题目。有了灵感,特记录下来。
题目是这样的:
Connect the country (20 Points)
We have a country containing N cities. Each day we choose 2 cities such that there is no road between them and build a road between them. We choose each pair of nonadjacent cities with equal probability. Let X be the number of days before we obtain a connected country. What is the expected value of X? Output the integer part of answer.
Input format:
First line of input as an integer N. N <= 30
Output format:
Print an integer being the result of the test.
Sample Testcases:
Input #00:
3
Output #00:
2
Input #01:
4
Output #01:
3
In the first example, first two roads are sufficient for connecting the cities so the answer would be 2.
In the second example if the first three roads of the country are edges of a triangle, then we need a fourth road to make the country connected, otherwise the country would be connected with first three roads. The probability of the former situation is 4/20 (number of triple of roads that make a triangle divided by number of ways we can choose 3 different roads), and the probability of former situation is 16/20. So the result would be 4/20*4 + 16/20*3 = 3.2 and since you have to print only the integer part as output, print 3
翻译一下,就是:
相连的国家:有个国家有n个城市,有一群小鼹鼠,每天可以在两个城市之间挖沟,每天只挖一条沟,它们看不见,就知道从这个城市挖到那个城市。问:需要挖几天,才可以把这个国家所有的城市挖联通?
内涵:n个点中,每天随机选两个点,画两个点之间的连线,x天后,这所有的点联通了?
例子:3个点,a, b,c 第一天,a,b连接,第二天,b,c或者ac连接,这三个点就联通了。
或者, 第一天 ,ac连接,第二天,ab,或者bc连接,这三个点也就联通了。
或者, 第三天,bc连接,第二天,ab,或者ac连接, 这三个点也就联通了。
所以E(x)= (1/3)*2+(1/3)*2+(1/3)*2=6/3=2,期望是2天。
再比如4个点,
有几种形态,一种是一个三角形,外加一个点,然后这个点,任意连到三角形一个顶点,必然就成了一个连通图。第二种,就是3条直线连接 4个点。
但是这种形态是不允许的,
已经4个点联通了,再多一条线,完全多余没必要。
所以最后是E(x)=(4/20)*4+(16/20)*3=3.2,所以傻乎乎的小鼹鼠,需要3.2天才能把这个国家挖联通。
再复杂一些的:6个点,10条线,但是这个图还未联通。
开始,我想了好多方法什么,组合,递归,发现都他妈的,不好使啊。最后,百无聊赖,灵感一来,这个问题解决了。
我们用矩阵的方式来重新表示图的联通。
那这个图就表示
再比如下图:
这个表格表示的是
可以看到,第一个是非连通图,第二个是连通图。
有什么规律可言,那就是对号在x,y方向上的投影,只有有一个方向上是满的,即这个图是联通的。
那么我们就需要遍历出,在有最后一行或者最后一列未填满的时候,所有可能的对号组合,是回溯吗?
我基本是真么考虑的,这就是这题的思路。有时间编程实现一下吧! :-)
分享到:
相关推荐
在编程领域,尤其是Java开发,面试街(InterviewStreet)是一个知名的在线平台,它提供了一系列的编码测试和面试问题,帮助开发者提升技能并准备技术面试。本文将深入探讨这个平台所涉及的Java相关知识点,以及如何...
- **在线编程竞赛**:可以通过参加CodeChef、InterviewStreet以及TopCoder等平台的比赛来提高自己的编程水平。 - **网站**:GeeksforGeeks是一个非常好的学习资源网站,涵盖了各种计算机科学领域的知识和实践案例。 ...
这个 repo 包含个人解决方案和各种编程练习的... 包括: Yodle的JuggleFest Groupon 的欺诈检测(为 CodeSprint 2 完成,InterviewStreet 举办) Spotify 的三态内存(代码挑战) Spotify 的 Troll 问题(代码挑战)
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
1. 用户角色 管理员 药店员工/药师 客户 2. 功能描述 管理员功能 用户管理 创建、编辑和删除药店员工和药师的账户。 设置不同用户的权限,确保敏感信息的安全。 库存管理 实时监控药品库存状态,设置库存预警,防止缺货或过期。 支持药品入库、出库和退货记录,自动更新库存数量。 商品管理 添加、编辑和删除药品信息,包括名称、规格、价格、生产厂家、有效期等。 分类管理药品,如处方药、非处方药、保健品等。 销售管理 查看和管理销售记录,生成每日、每周和每月的销售报表。 分析销售数据,了解畅销产品和季节性变化,以优化库存。 财务管理 监控药店的收入与支出,并生成财务报表。 管理支付方式(现金、信用卡、电子支付)及退款流程。 客户管理 记录客户的基本信息和购买历史,提供个性化服务。 管理会员制度,设置积分和优惠活动。 药品监管符合性 确保药店遵循相关法规,跟踪药品的进货渠道和销售记录。 提供合规报告,确保按规定进行药品管理。 报告与分析 生成各类统计报表,包括销售分析、库存分析和客户行为分析。 提供决策支持,帮助制定更好的经营策略。 药店员工/药师功能 销售操作 处理顾客的药
Matlab领域上传的视频是由对应的完整代码运行得来的,完整代码皆可运行,亲测可用,适合小白; 1、从视频里可见完整代码的内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作
今天吴老师上课的时候说我.txt
检测骨架图像的交点Matlab代码.rar
MMC simulink 模块化多电平变流器 载波移相 双闭环仿真 输出谐波分析,线性自抗扰控制LADRC 有仿真文件
自动驾驶控制-斯坦利(stanely)算法路径跟踪仿真 matlab和carsim联合仿真搭建的无人驾驶斯坦利控制器仿真验证,可以实现双移线,圆形,以及其他自定义的路径跟踪。 跟踪效果如图,几乎没有误差,跟踪误差在0.05m以内。
TongRDS是redis的国产化替代品之一,里面含有相应的安装部署包及操作流程,详细介绍TongRDS的基本部署和基本开发使用。
基于mpvue实现豆瓣电影微信小程序@zce_mpvue-Douban
隔离型DCDC变器设计,LLC谐振变器闭环仿真,变频控制。 有自己做的对应明 ,十分详细。
Delphi in Depth - FireDAC.rar
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
ShellBox微信小程序,集日程查询、成绩查询、电费查询、图书查询等功能于一体的高校微信小软件_ShellBox
Java小程序项目源码,该项目包含完整的前后端代码、数据库脚本和相关工具,简单部署即可运行。功能完善、界面美观、操作简单,具有很高的实际应用价值,非常适合作为Java毕业设计或Java课程设计使用。 所有项目均经过严格调试,确保可运行!下载后即可快速部署和使用。 1 适用场景: 毕业设计 期末大作业 课程设计 2 项目特点: 代码完整:详细代码注释,适合新手学习和使用 功能强大:涵盖常见的核心功能,满足大部分课程设计需求 部署简单:有基础的人,只需按照教程操作,轻松完成本地或服务器部署 高质量代码:经过严格测试,确保无错误,稳定运行 3 技术栈和工具 前端:小程序 后端框架:SSM/SpringBoot 开发环境:IntelliJ IDEA 数据库:MySQL(建议使用 5.7 版本,更稳定) 数据库可视化工具:Navicat 部署环境:Tomcat(推荐 7.x 或 8.x 版本),Maven
微信小程序校园微社区_ zafuBBS
计算图像的多向特征编码 (Contour Code Representation)Matlab代码.rar