2023河南萌新联赛第(六)场:河南理工大学-C 旅游

2023河南萌新联赛第(六)场:河南理工大学

https://ac.nowcoder.com/acm/contest/63602/C

文章目录

  • 2023河南萌新联赛第(六)场:河南理工大学
    • 题意
    • 解题思路
    • 代码

题意

小C喜欢旅游,现在他要去DSH旅游,DSH里有 n n n个城市和 n − 1 n−1 n1条双向道路(每条道路长度为1),每条道路连接两个城市,并且任意两个城市都可以通过这些的道路互相到达。现在小C要使用魔法指定传送到DSH里的一个城市,作为他旅游的出发城市,小C旅游遵从以下原则:

  1. 当小C抵达一个城市的时候,他会去跟当前这个城市相连的城市;
  2. 他只去他以前没有去过的城市;
  3. 在每个城市,小C以相同的概率移动去上述符合要求的城市;

当没有这样的城市(可走)时,小C就停下了。
由于小C太喜欢DSH了,所以请你告诉小C,在他可以指定传送出发城市的情况下,他的旅游路径的期望最大值是多少。

解题思路

先确定 1 1 1为根节点,设 d p x dp_x dpx表示以 x x x为根的子树内走过节点个数的期望值,则 d p x = 1 + 1 ∣ s o n x ∣ ∑ s ∈ s o n x d p s dp_x=1+\frac{1}{|son_x|}\sum_{s\in son_x}dp_s dpx=1+sonx1ssonxdps,求出后,设 f x f_x fx表示以 x x x为出发点,经过节点个数的期望值,显然 f 1 = d p 1 f_1=dp_1 f1=dp1,可以用换根 d p dp dp O ( n ) O(n) O(n)求出 { f } \{f\} {f},对于 f x f_x fx,其值包括其原来的子树的贡献和原来的父亲 f a fa fa的贡献。首先考虑子树,贡献为 1 ∣ s o n x + 1 ∣ ∑ s ∈ s o n x f s \dfrac{1}{|son_x+1|}\sum_{s\in son_x}f_s sonx+1∣1ssonxfs,可以发现 ∑ s ∈ s o n x f s = ( d p x − 1 ) × ∣ s o n x ∣ \sum_{s\in son_x}f_s=(dp_x-1)\times|son_x| ssonxfs=(dpx1)×sonx,所以为 ∣ s o n x ∣ ∣ s o n x + 1 ∣ ( d p x − 1 ) \dfrac{|son_x|}{|son_x+1|}(dp_x-1) sonx+1∣sonx(dpx1)。对于 f a fa fa的贡献,包括以 f a fa fa为根的树的期望减去以 x x x为儿子的贡献,为 v e c f a . s i z e ( ) × f f a − d p x − 1 v e c f a . s i z e ( ) − 1 × 1 ∣ s o n x ∣ + 1 \dfrac{vec_{fa}.size()\times f_{fa}-dp_x-1}{vec_{fa}.size()-1}\times\dfrac{1}{|son_x|+1} vecfa.size()1vecfa.size()×ffadpx1×sonx+11(之所以用 v e c f a . s i z e ( ) vec_{fa}.size() vecfa.size()是避免 f a = 1 fa=1 fa=1时再分类讨论),加上其本身,整理可得:
f x = 1 ∣ s o n x ∣ + 1 ( ( d p x − 1 ) × ∣ s o n x + 1 ∣ + v e c f a . s i z e ( ) × f f a − d a x − 1 v e c f a . s i z e ( ) − 1 ) + 1 f_x=\dfrac{1}{|son_x|+1}((dp_x-1)\times|son_x+1|+\dfrac{vec_{fa}.size()\times f_{fa}-da_x-1}{vec_{fa}.size()-1})+1 fx=sonx+11((dpx1)×sonx+1∣+vecfa.size()1vecfa.size()×ffadax1)+1
记得 g g g表示的是节点数,答案要求路径长,要将最大值减一。

代码

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+5;
int n;
double dp[N],f[N],ma;
vector<int>ve[N];
void dfs1(int u,int fa){int cnt=(ve[u].size()-(u!=1?1:0));for(auto v:ve[u]){if(v==fa)continue;dfs1(v,u);dp[u]+=1.0/cnt*dp[v];}dp[u]=dp[u]+1;
}
void dfs2(int u,int fa){ma=max(f[u],ma);int sum=ve[u].size();for(auto v:ve[u]){if(v==fa)continue;int cnt=ve[v].size()-1;f[v]=(1.0*(dp[v]-1)*cnt+(sum>1?(sum*f[u]-dp[v]-1)/(sum-1):1))/(cnt+1)+1;dfs2(v,u);}
}
int main(){cin>>n;for(int i=1;i<n;i++){int u,v;cin>>u>>v;ve[u].push_back(v);ve[v].push_back(u);}dfs1(1,0);f[1]=dp[1];dfs2(1,0);printf("%.3lf",ma-1);
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/46811.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Stable Diffusion:使用自己的数据集微调训练LoRA模型

Stable Diffusion&#xff1a;使用自己的数据集微调训练LoRA模型 前言前提条件相关介绍微调训练LoRA模型下载kohya_ss项目安装kohya_ss项目运行kohya_ss项目准备数据集生成关键词模型参数设置预训练模型设置文件夹设置训练参数设置 开始训练LoRA模型TensorBoard查看训练情况 测…

一篇搞懂TCP、HTTP、Socket、Socket连接池

前言&#xff1a;作为一名开发人员我们经常会听到HTTP协议、TCP/IP协议、UDP协议、Socket、Socket长连接、Socket连接池等字眼&#xff0c;然而它们之间的关系、区别及原理并不是所有人都能理解清楚&#xff0c;这篇文章就从网络协议基础开始到Socket连接池&#xff0c;一步一步…

算法题面试实战收集

回文数字 2023-08-18 美团 一面 在不使用额外的内存空间的条件下判断一个整数是否是回文。 回文指逆序和正序完全相同。 数据范围&#xff1a; 进阶&#xff1a; 空间复杂度O(1) &#xff0c;时间复杂度 O(n) 提示&#xff1a; 负整数可以是回文吗&#xff1f;&#xff08;比如…

Flink内核源码解析--Flink中重要的工作组件和机制

Flink内核源码 1、掌握Flink应用程序抽象2、掌握Flink核心组件整体架构抽象3、掌握Flink Job三种运行模式4、理解Flink RPC网络通信框架Akka详解5、理解TaskManager为例子&#xff0c;分析Flink封装Akka Actor的方法和整个调用流程6、理解Flink高可用服务HighAvailabilityServ…

了解生成对抗网络 (GAN)

一、介绍 Yann LeCun将其描述为“过去10年来机器学习中最有趣的想法”。当然&#xff0c;来自深度学习领域如此杰出的研究人员的赞美总是对我们谈论的主题的一个很好的广告&#xff01;事实上&#xff0c;生成对抗网络&#xff08;简称GAN&#xff09;自2014年由Ian J. Goodfel…

派森 #P126. 维吉尼亚加密

描述 维吉尼亚密码引入了“密钥”的概念&#xff0c;即根据密钥来决定字符的替换关系。 如上图为维吉尼亚密码的加密过程示意&#xff0c;左边为加密替换表&#xff0c;上面第一行代表明文字母&#xff0c;左面第一列代表密钥字母&#xff0c;对如下明文加密&#xff1a;‪‬…

2023.8 - java - 泛型

泛型问题的引出&#xff1a; jdk 1.5 引出泛型 // package 泛型; public class index {public static void main (String[] args){test t new test();t.setContent("aaa");int a (int) t.getContent();System.out.println(a);} }class test{Object content;publi…

选云服务器还是物理服务器

选云服务器还是物理服务器 一、为什么需要云服务器或独立服务器取代共享主机 在最早之前&#xff0c;大多数的网站都是共享主机开始的&#xff0c;这里也包含了云虚拟机。这一类的站点还有其他站点都会共同托管在同一台服务器上。但是这种共享机只适用于小的网站&#xff0c;如…

快速解决Ubuntu 中 wine 程序 中文显示为方块/显示错误/无法显示中文(2023)

解决办法就是在创建prefix的命令行里加上LANG“zh_CN.UTF8” 或 LC_ALL“zh_CN.UTF8”&#xff0c;并安装cjkfonts&#xff0c;即可。 1、生成prefix、安装cjk字体 以下是基本流程&#xff1a; 现在假定wine和winetricks已经装好&#xff0c; // 先创建一个prefix&#xff0…

Oracle jdk8 exe->zip

一、背景 目前Oracle网站对应jdk8安装windows仅存在exe安装包&#xff0c;对于某些用户一台机器上对应jdk版本需动态切换&#xff0c;故需使用zip版本jdk&#xff0c;更加方便&#xff0c;本文介绍如何从jdk对应exe提取zip。 二、步骤 下载jdk8对应exe安装包&#xff1b;使用…

【docker】基于dockerfile编写LNMP

目录 一、基础环境准备 二、部署nginx&#xff08;容器IP为172.18.0.10&#xff09; 1、整个Dockerfile文件内容 2、配置nginx.conf文件 3、构建镜像 ​编辑 三、部署mysql 1、整个Docker文件内容 2、准备my.conf文件 3、生成镜像 4、启动镜像容器 5、验证mysql 四、PH…

❤echarts折线图完整使用及详细配置参数

❤echarts折线图完整使用及详细配置参数 进入echarts官网 查看案例&#xff0c;下面说说一些echarts图的调节 一、配置echarts具体参数 01 基础版本的折线图 option {xAxis: {type: category,data: [Mon, Tue, Wed, Thu, Fri, Sat, Sun]},yAxis: {type: value},series: [{data…

Logback日志框架配置使用

一、简述 Logback一个通用、快速而又灵活的Java日志框架。主要分为三个模块组成 logback-core&#xff1a; 其他两个模块的基础模块logback-classic&#xff1a; 由log4j的改良版本&#xff0c;完整实现了slf4j的API&#xff0c;所以可以很方便的更换成其他日志系统如log4j或…

将eNSP Pro部署在华为云是什么体验

eNSP Pro简介 eNSP Pro 是华为公司数据通信产品线新推出的数通设备模拟器&#xff0c;主要应用在数据通信技能培训&#xff0c;为使用者提供华为数据通信产品设备命令行学习环境。 具备的能力 多产品模拟能力&#xff1a;支持数据通信产品线NE路由器、CE交换机、S交换机、AR…

Spring-3-Spring AOP概念全面解析

今日目标 能够理解AOP的作用 能够完成AOP的入门案例 能够理解AOP的工作流程 能够说出AOP的五种通知类型 一、AOP 1 AOP简介 思考&#xff1a;什么是AOP,AOP的作用是什么&#xff1f; 1.1 AOP简介和作用【理解】 AOP(Aspect Oriented Programming)面向切面编程&#xff0c;一…

AveMaria 传播手段的变化

AveMaria 是一种最早在 2018 年 12 月出现的窃密木马&#xff0c;攻击者越来越喜欢使用其进行攻击&#xff0c;运营方也一直在持续更新和升级。在过去六个月中&#xff0c;研究人员观察到 AveMaria 的传播手段发生了许多变化。 2022 年 12 月攻击行动 研究人员发现了名为 .Vh…

Django模板语法,带你快速入门

目录 案例一&#xff1a;登录页面 案例二&#xff1a;for案例 if案例——单个字符串的传递&#xff0c;列表的传递&#xff0c;字典的传递 模板语法其本质&#xff1a;本质上&#xff0c;Django的模板语法就是在html中&#xff0c;写一些占位符&#xff0c;由数据对这些占位符…

Keepalived+LVS部署高可用集群

文章目录 KeepalivedLVS(DR)部署高可用Web集群集群环境MASTER配置BACKUP配置检查Virtual IP是否漂移IPVS检查MASTERBACKUP Real Server配置附上个人写的小脚本 测试停用Real Server某一台的Apache服务停用Master上的keepalived检测Backup是否接管资源 KeepalivedLVS(DR)部署高可…

二叉树的遍历

二叉树的遍历 关于二叉树的遍历方式&#xff0c;要知道二叉树遍历的基本方式都有哪些。二叉树主要有两种遍历方式&#xff1a; 深度优先遍历&#xff1a;先往深走&#xff0c;遇到叶子节点再往回走。 前序遍历&#xff08;递归法&#xff0c;迭代法&#xff09;中序遍历&#…

【LeetCode-中等题】11. 盛最多水的容器

题目 题解一:双指针法 思路&#xff1a; 题目中的示例为&#xff1a; 在初始时&#xff0c;左右指针分别指向数组的左右两端&#xff0c;它们可以容纳的水量为 min⁡(1,7)∗88 此时我们需要移动一个指针。移动哪一个呢&#xff1f;应该移动对应数字较小的那个指针&#xff0…