挑战编程:修路问题 [转]

道路维修(python实现) 描述 有一条无限长的道路,道路可以近似看做一条直线。道路上有 N 个部分需要维修, 第 i 个部分的维修的位置是 Vi,Xi 时间开始维修,直到 Yi 时间维修结束。有 Q 个维修工人,第 i 个工人的上班的时间是 Ai,下班时间是 Bi,从 Ai 时间开始, 他负责所有维修位置在[Li,Ri]范围的道路,直到 Bi 时间结束。他想要知道他的 工人上班的每一分钟是否都在进行维修工作,你能编写一个程序回答他吗? 输入 第一行一个整数 N,接下来 N 行,每行三个整数 V 阅读详情

题目描述:

一个城市有n个景点,起初这n个景点之间全都没有道路直接连通。
接下来的每一天, 我们要在这些没有道路直接相连的景点中,等概率的随机选取两个景点,给它们修一条道路让这两个景点直接连通。
那么请问平均期望(期望=sigma(概率*路的条数) )多少天后,我们可以使得全部景点连通起来?使得任意两个景点都可以通过我们修建的道路到达。
给定函数头部int calculate(int n);
完成它以实现上述功能,其中2<=n<=30。
举几个例子如下: n =2,返回1,即1天连通2点景点; n=3,返回2,2天连通3个景点; n=4,返回3(对返回结果向下取整),
3天联通4个景点; n=5,返回4; n=6,返回6; n=7,返回7; n=8,返回9 ....     
解释下上面n=3和n=4的情况:

n=3时,两条路足够连通三个景点,所以答案是2;
n=4时,如果前三条路恰好构成三角形,那么我们还需要一条路使景点连通,需要4条路的概率是4/20 (选出3条路构成三角形的方法数除以任选3条路的方法数),
所以最后期望是 4 * (4/20) + 3 * (16/20) = 3.2 输出3。

挑战规则:
对返回结果向下取整; main函数是为方便你在提交代码之前进行在线编译测试,可不完成; 一旦提交代码,便不能再次重复提交。


问题分析:

题目用图论的语言来叙述就是:一个起初没有边的图,不断随机选择未直接相连的两点连边直到图连通,求连边的期望。

p[n][m]表示加m条边使得n个点连通的概率。那么p[n][m]-p[n][m-1]就表示加了m-1条边图尚未连通,加了第m条边后图连通的概率。那么显然需要加边的期望值是

Σ(p[n][m]-p[n][m-1])*m
要使得n个点的图连通,至少需要n-1条边,至多需要c(n-1,2)+1条边(即n-1个点两两相连形成完全图,再用一条边与剩下的一个点连接,其中c(n,m)表示n个中选m个的组合数)。这就是上式m的取值范围。

现在问题变成如何计算p[n][m]。
正面计算p[n][m]比较困难,我们通过减去反面(即加了m条边,n个点不连通的概率)来计算。
既然图不是连通的,必然任意一个连通分量包含的点数小于n。不妨考虑编号为1的点所在的连通分量,假设有n1个点,m1条边。为了组建这个连通分量,首先选出除1外的n1-1个点,有c(n-1,n1-1)种方法。之后连m1条边,这有c(e1,m1)种方法,其中e1=c(n1,2)是可选的边数。在这所有的连边方法中要保证连完之后这n1个点是连通的,这恰好就是p[n1][m1]的意义,乘以这个数就得到了,到这里这个连通分量组建完成。对于剩下的m-m1条边,我们只要不连到上述连通分量就行了,也就是在剩下的n-n1个点之间连。方法数是c(c(n-n1,2),m-m1)。将这些数相乘就得到方法数,
counts[n1][m1]= c(n-1,n1-1)*c(e1,m1)*p[n1][m1]* c(c(n-n1,2),m-m1)
总的方法数是total=c(c(n,2),m),求概率counts[n1][m1]/total

上面计算的是1所在的连通分量有n1个点,m1条边的情况,我们需要枚举n1,m1。

下面是zzz---的代码


#include <cstdio>
#include <string>
#include <cstring>
#include <iostream>
using namespace std;

double a[451][451];

double c(int n,int k)
{
    if(k<0 || n<k)
        return 0;
    if(k==n || k==0)
        return 1;
    if(a[n][k])
        return a[n][k];
    a[n][k]=c(n-1,k)+c(n-1,k-1);
    return a[n][k];

}

double p[31][451],ans[31];

class RepairRode
{
public:
    double calculate(int n) {
        if(ans[n]!=0)
            return (int)ans[n];
        p[1][0]=1;
        for(int i=2;i<=30;++i)
        {
            int e=c(i,2);
            for(int j=i-1;j<=e;++j)
            {
                p[i][j]=1;
                for(int k=1;k<i;++k)
                {
                    int e1=c(k,2),e2=c(i-k,2);
                    for(int b=k-1;b<=e1;++b)
                    {
                        p[i][j]-=c(e2,j-b)*p[k][b]*c(e1,b)*c(i-1,k-1)/c(e,j);
                    }
                }
                double pre=0;
                if(j>0)
                    pre=p[i][j-1];
                ans[i]+=j*(p[i][j]-pre);
            }
        }
        return ans[n];
    }
};

转载自:http://blog.youkuaiyun.com/shuyechengying/article/details/9821745


JAVA-数据结构与算法-修路问题(普里姆算法)和公交站问题(克鲁斯卡尔算法) 修路问题(普里姆算法) 最小生成树,给定一个带权的无向连通图,如何选择一颗生成树,使树上所有边上权的总和为最小;N个顶点,N-1条边 普里姆算法,在包含n个顶点的连通图中,找出只有n-1条边,包含所有n个顶点的连通子图,极小连通子图 创建最小生成树,每个顶点的之间都选去最小的权值作为连通点;由于每个顶点都有两种状态访问过/没有被访问过,那么两层for循环,就可以保证所有顶点都被扫描到,再通过mGraph.weight[i][j] < minWeight,保证再一次子图的遍历中,获取的边(向外生长 阅读详情

相关推荐

NOIP普及组复赛题集

问题 A: 抓牛 题目描述 牛倌被通知,他的一只牛逃逸了!所以他决定,马上出发,尽快把那只牛抓回来. 他们都站在数轴上.牛倌在N(0≤N≤100000)处,牛在K(0≤K≤100000)处.约翰有两种办法移动,步行和瞬移:步行每秒种可以让约翰从x处走到x+l或x-l处;而瞬移则可让他在1秒内从x处消失,在2x处出现.然而那只逃逸的牛,悲剧地没有发现自己的处境多么糟糕,正站在那儿一动不动....

Summer_undertone的博客 698

python CCF 201509-4 高速公路

【问题描述】   某国有n个城市,为了使得城市间的交通更便利,该国国王打算在城市之间修一些高速公路,由于经费限制,国王打算第一阶段先在部分城市之间修一些单向的高速公路。   现在,大臣们帮国王拟了一个修高速公路的计划。看了计划后,国王发现,有些城市之间可以通过高速公路直接(不经过其他城市)或间接(经过一个或多个其他城市)到达,而有的却不能。如果城市A可以通过高速公路到达城市B,而且城市B也可以通过...

qq_44814439的博客 537

使用“最小生成树”算法解决村庄修路问题

若干村庄由若干条路链接,每条路需要一定的费用进行维护。为了使得维护的总费用最小,现在决定去掉一些道路,但要求各村庄之间仍然保持联通。使用“最小生成树”算法,设计一个程序使得村庄之间的总维护费用最小。

修路兴邦

修路兴邦 描述 有n个城市,在两个城市之间修建双向道路的成本是其两个城市GDP的总和。 请计算所有城市连通(任何两个城市都可以相互到达)的最低费用。 输入 第一行T(1<=T<=10)代表T组数据 每组数据有两行 第一行n(1<=n<=100000)代表有n个城市 第二行n个数字代表各个城市的GDP(1<=GDP<=10^9) 输出 共T行,每行一个数字代表最低...

qq_44939000的博客 372

Echats-wordcloud 文字云图的踩坑点【Unknown series wordCloud】

一直都是报 【ECharts Unknown series wordCloud】这玩意可能要刷脸,祝你好运吧~

Sky_Bug的博客 2418

fastadmin云快充充电桩系统部署文档uniapp

多商户 嘎嘎快充V1.0部署文档 一、服务器环境: 服务器配置4核心8GB内存5M带宽以上配置 VX next1402 只支持linux环境 nginx1.22 php7.2 开启redis、fileinfo扩展,关闭禁用workerman gatewayworkerman需要的函数,如pcntl相关的函数 mysql5.7 supervisor redis 注意: 1.站点必须配置https、websocket配置wss 2.注意开放直连服务端口:2024,并添加到安全组 二、必

itholiday2014的博客 1629

公路村村通

7-10公路村村通(30 分) 现有村落间道路的统计数据表中,列出了有可能建设成标准公路的若干条道路的成本,求使每个村落都有公路连通所需要的最低成本。 输入格式: 输入数据包括城镇数目正整数N(≤1000)和候选道路数目M(≤3N);随后的M行对应M条道路,每行给出3个正整数,分别是该条道路直接连通的两个城镇的编号以及该道路改建的预算成本。为简单起见,城镇从1到N编...

勤劳的码农 1814

AI驱动的研发流程:定义高度专业和系统化的规划基准

在人工智能(AI)浪潮席卷全球的今天,软件研发的范式正经历着一场深刻而迅速的变革。AI技术的渗透,从最初的辅助工具角色,正逐步演变为驱动整个研发流程的核心引擎。传统的研发流程和项目管理方法论,在面对AI带来的高效率、高智能以及高复杂性挑战时,显得力不从心。企业对快速交付高质量软件产品、有效控制风险、并保证全流程可追溯性的需求日益迫切。

形上得其象,形下合于数;阴阳自济,玄理自明。 2181

3. 羊羊修路

经过特色示范羊村检查,检查组觉得羊村的道路需要重修,破败的道路,会影响到小羊们上学的安全。村长组织施工队,开始丈量距离,规划施工方案,已经得到了若干建筑物间修建道路的可行方案,共有N个建筑物,和M条可选道路。这些路保证可以将N个建筑相连。最终方案中,羊村打算修建全球最豪华的全大理石道路,道路可以双向通行,且一体成型,路中无缝隙。为了达到这个设计要求,就必须自建大理石工厂!大理石工厂建造的难度在于,必须根据其需要生产最大长度的大理石来设计。工厂可以生产出不超过其设计极限的任意长度的大理石。

2301_76709357的博客 1135

Clock Gating设计陷阱:为什么你的ICG cell总是导致setup violation?(附解决方案)

本文深入分析了数字IC设计中ICG(Integrated Clock Gating)单元导致setup时序违规的常见问题,包括时钟偏斜和数据路径过长两大核心原因。通过量化分析影响因素,提供了逻辑重组、寄存器重定时等优化策略,并介绍了预防性设计方法和物理实现阶段的优化技巧,帮助工程师有效解决ICG相关的setup violation问题。

weixin_29168153的博客 205

LabVIEW机器视觉通用软件

LabVIEW 通用视觉一款仿C模式的思想与方法 全网最精简零基础+通用视觉全套视频教程 只想把LabVIEW当作一种兴趣,结果却当成了职业 http://t.elecfans.com/c1181.html 本次(开源 )针对有一定视觉基础或项目开发经验的工程师量身打造视觉通用性系统(完全仿面向对象的原理),相对于一般的非标框架更具功能性,有效的解决复杂项目开发过程中的思路瓶颈。 LabVIEW通用视觉系统:通用软件可快速解决大部分简单的视觉开发项目,帮助众多软件工程师解决在非标视觉软件开发中的繁琐过程问

qq_21516871的博客 4610

LJJ王国的致富修路计划 sdut oj

LJJ王国的致富修路计划 Problem Description 众说周知LJJ王国有着奇异的结构,因为LJJ国王喜欢素数,所以王国里的路的结构都和素数有关。现在LJJ国王又双叒叕修路了。现有n个要连接起来的城镇你可否能用素数条边使得这n个城镇变得连通。并且每个节点的度也是素数。(2<=n<=1000). Input 一个数n,表示n个点。 Output 若能构造出符合条件的图,输出1...

qq_45830025的博客 294

如何在Ubuntu 22.04系统上安装CUDA 12.9

本文提供Ubuntu22.04系统上安装CUDA12.9的简明指南:1)确认已安装适配575驱动;2)清理旧版本后安装必需依赖库;3)通过deb包方式添加英伟达源并安装CUDA12.9工具包;4)配置环境变量;5)通过nvcc-V和nvidia-smi命令验证安装。文中包含常见问题解决方法及多显卡使用说明,全程约需10分钟完成安装。

2501_93651177的博客 1480

实际编程常遇到的算法问题

实际编程常遇到的算法问题 字符串替换问题(raplaceAll算法) 单链表 五子棋问题 存档:将棋盘映射成二维数组,转成稀疏数组,写入文件,存档功能。 接上局:读取文件,读取稀疏数组,二维数组,棋盘,接上局功能。 约瑟夫问题(丢手帕问题) 不带头结点的单向环形循环链表 修路问题 最小生成树,可以用普利姆算法+树结构 最短路径问题 弗洛伊德算法+图结构 汉诺塔 分...

孔祥月的博客 378

大模型选型实战:为OpenClaw匹配最优“大脑”的全维度考量

大模型不是越贵越好,也不是参数越高越好,适合自己的使用场景才是最好的。按照我的方法,先明确自己的需求,再选对应的模型,配置多模型自动路由,既能保证体验,又能最大限度降低成本。我自己用这套配置用了半年多,不管是写文章、写代码还是处理复杂问题,都完全够用,成本也很低,大家可以参考一下。如果不知道选什么模型,可以在评论区说一下你的使用场景。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 343

zabbix深度监控之邮件告警、微信群和微信告警

本文详细介绍了Zabbix监控系统实现邮件告警和微信告警的配置方法。邮件告警部分包含QQ和163邮箱的SMTP服务器配置、消息模板设置、告警流程三步骤(媒介配置、触发器动作、用户设置)。微信告警分为两种方式:企业微信群机器人告警(通过webhook实现)和企业微信应用告警(需创建应用并获取API参数)。两种告警方式都提供了完整的配置流程,包括脚本编写、权限设置、消息模板定制等关键步骤,并特别说明了如何使个人微信接收企业微信告警消息。文章还对比了SMTP、POP3、IMAP三种邮件协议的差异及适用场景。

提供C#相关开发 、云计算、运维测试、网络安全相关技术分享与服务,有意向可联系。 816

第十三届蓝桥杯大赛软件赛决赛(Java 大学B组)

第十三届蓝桥杯大赛软件赛决赛 Java 大学 B 组

NOW I GOT ONE WAY 8302

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

数据结构与算法学习一:学习前的准备,数据结构的分类,数据结构与算法的关系,实际编程中遇到的问题,几个经典算法问题

文章目录前言一、数据结构1.1 线性结构1.2 非线性结构二、数据结构与算法2.1 两者之间的关系2.2 两者重要性三、实际编程中遇到的问题3.1 单链表问题3.2 五子棋问题3.3 约瑟夫(Josephu)问题(丢手帕问题)3.4 其他常见算法问题四、几个经典的算法面试题()4.1 字符串匹配4.2 汉诺塔游戏4.3 八皇后问题4.4 马踏棋盘算法 前言 2020.4.18日开始学习数据结构与...

冯安晨 748

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

1592: [Usaco2008 Feb]Making the Grade 路面修整

1592: [Usaco2008 Feb]Making the Grade 路面修整 Time Limit:10 SecMemory Limit:162 MBSubmit:428Solved:316[Submit][Status][Discuss] Description FJ打算好好修一下农场中某条凹凸不平的土路。按奶牛们的要求,修好后的路面高度应当单调上...

142

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

CSU暑期集训day02_G_修路翻题

题目: 作为老人的小明非常忧伤,因为他马上要被流放到本部去了,住进全左家垅最有历史感的11舍真是一件非常荣幸的事情。 搬行李是个体力活,小明发现自己的行李太多啦,所以他决定去买很多个袋子来装走。到了超市的小明发现,不同大小的袋子居然价格一样???虽然买最大的自然最赚,但是小明是名远近闻名的环保人士,他觉得袋子只要能装下他的行李就够了,并且为了不麻烦收银的小姐姐(⊙o⊙)…,他也只会购买同一种大小...

我纵身一跃,跳进人的海洋 212

智能算法挑战赛决赛题目——初中组

从 m 个字符中选取字符,生成 n 个符号的序列,使得其中没有 2 个相邻的子序列相同。如从 1,2,3,生成长度为 5 的序列,序列“12321”是合格的,而“12323”和“12123”是不合格。问:已知 m 和 n 都是小于等于 10 的数字,求 m 个不同字符,组成长度n 的序列中,无 2 个相邻相同的子序列的序列总数?一行两个正整数,第一个是 m,表示不同的字符,第二个是 n,表示序列长度,0<m<=n<=10.一个数,表示序列种没有 2 个相邻相同子序列的序列总数。3 530。

CylMK的博客 1577

计算机能力挑战赛C++真题解析与经验总结

对于需要交互演示的算法题(如可视化二叉树遍历),平台提供的实时预览功能让调试过程更直观。实际测试Dijkstra算法案例时,邻接表的构建和优先级队列的使用都能流畅运行,比官方竞赛平台体验更友好。实测发现,其内置的C++环境能完美支持竞赛常用语法特性(如C++11的auto、lambda等)。特别是一键运行功能,省去了本地配置环境的麻烦,提交前快速验证代码的正确性非常方便。子串查找推荐使用KMP算法,其核心是通过next数组避免重复匹配。同步关闭:ios::sync_with_stdio(false)

QuartzStag78的博客 858

存内计算:打破内存墙的革命性技术,能否挑战GPU的统治地位?

在计算机体系结构中,冯·诺依曼架构长期面临“内存墙”瓶颈,即数据在处理器与存储器之间的频繁搬运导致巨大能耗和延迟。为解决这一问题,存内计算(In-Memory Computing)应运而生,其核心原理是让存储单元具备计算能力,直接在数据存储位置完成操作,从而大幅减少数据移动。这项技术通过利用存储器件的物理特性(如基于RRAM的交叉阵列利用欧姆定律实现模拟乘累加运算),在能效上具有革命性潜力,尤其适用于数据密集型任务。从技术价值看,存内计算并非旨在取代通用处理器,而是作为专用加速器,针对特定场景提供极致能效。

weixin_30666401的博客 406

喵哈哈村的魔法考试 Round #9 (Div.2) 题解

A题 喵哈哈村的数据筛选游戏 题解:这道题签到题,拿个数组记录一下这个数是否出现过即可。 #include<bits/stdc++.h> using namespace std; const int maxn = 1e5+5; int vis[maxn]; int n; int a[maxn]; int main(){ while(cin>>n){ ...

weixin_30763455的博客 79

牛客网多校训练 道路问题

题目描述 随着如今社会的不断变化,交通问题也变得越来越重要,所以市长决定建设一些公路来方便各个城市之间的贸易和交易。虽然市长的想法很好,但是他也遇到了一般人也经常头疼的问题,那就是手头的经费有限……在规划过程中,设计师们已经预算出部分城市之间建设公路的经费需求。现在市长想知道,它能不能将他的m个城市在有限的经费内实现公路交通。如果可以的话,输出Yes,否则输出No(两个城市不...

diandu7489的博客 93

善良的国王(最小生成树变形)

问题 C: 善良的国王 时间限制: 1 Sec  内存限制: 128 MB 提交: 112  解决: 48 [提交][状态][讨论版] 题目描述 很久很久以前,有一个贫困的国家,这个国家有一个善良爱民的国王,但是国运维艰,这个国家总是不得不面对这天灾的严峻挑战,又一次连月的大雨,引发了洪水,洪水冲断了道路,水褪去后也有很多村庄成为了孤岛,善良的国王爱民如子,于是他想从本不富足的税收中拿出

bokzmm的博客 665
上一篇: 挑战编程:直方图中获取最大矩形面积
下一篇: 挑战编程:回文字符串
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不会唱歌的老樊

老少爷们,来个赏!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值