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

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

时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 262144K,其他语言524288K
Special Judge, 64bit IO Format: %lld

题目描述

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

  1. ​当小C抵达一个城市的时候,他会去跟当前这个城市相连的城市;
  2. ​他只去他以前没有去过的城市;
  3. ​在每个城市,小C以相同的概率移动去上述符合要求的城市;
  4. ​当没有这样的城市(可走)时,小C就停下了。

​ 由于小C太喜欢DSH了,所以请你告诉小C,在他可以指定传送出发城市的情况下,他的旅游路径的期望最大值是多少。

输入描述:

第1行一个整数 n ( 1 ≤ n ≤ 100000 ) n(1\leq n \leq 100000) n(1n100000),表示DSH有 n n n个城市;
接下来 n − 1 n-1 n1行,每行包含两个整数 a a a b ( 1 ≤ a , b ≤ n ) b (1 \leq a, b \leq n) b(1a,bn),表示城市 a a a和城市 b b b之间有一条双向道路。

输出描述:

输出一个数,表示这次旅游期望可以达到的最大值,保留三位小数。

示例1

输入

4
1 2
1 3
2 4

输出

3.000

说明


如上图:
如果初始传送至城市3,那么他的旅游路径是 ( 3 , 1 , 2 , 4 ) (3,1,2,4) (3,1,2,4),总距离为3,期望为3;
如果初始传送至城市1,那么他的旅游路径可以是 ( 1 , 2 , 4 ) (1,2,4) (1,2,4),总距离为2,也可以是 ( 1 , 3 ) (1,3) (1,3),总距离为1,所以期望是1.5;
如果初始传送至城市2,那么他的旅游路径可以是 ( 2 , 4 ) (2,4) (2,4),总距离是1,也可以是 ( 2 , 1 , 3 ) (2,1,3) (2,1,3),总距离是2,所以期望是1.5;
如果初始传送至城市4,那么他的旅游路径是 ( 4 , 2 , 1 , 3 ) (4,2,1,3) (4,2,1,3),总距离为3,期望为3。
所以最大期望是3。

示例2

输入

7
1 4
1 2
4 5
4 3
2 7
2 6

输出

3.000

在这里插入图片描述

import java.io.*;
import java.util.ArrayList;

public class Main {

    static int N = 100010;
    static ArrayList<Integer>[] adj = new ArrayList[N];
    static double[] downsum = new double[N];
    static double[] downavg = new double[N];
    static double[] upsum = new double[N];
    static double[] upavg = new double[N];

    public static void dfs1(int u, int fa) {
        for (int v : adj[u]) {
            if (v == fa) continue;
            dfs1(v, u);
            downsum[u] += downavg[v];
        }
        if (adj[u].size() == 1) downavg[u] = 0;
        else downavg[u] = downsum[u] / (adj[u].size() - (fa != 0 ? 1 : 0)) + 1;
    }

    public static void dfs2(int u, int fa) {
        for (int v : adj[u]) {
            if (v == fa) continue;
            upsum[v] = upavg[u] + downsum[u] - downavg[v];
            upavg[v] = upsum[v] / (adj[u].size() - 1) + 1;
            dfs2(v, u);
        }
    }

    public static void main(String[] args) throws IOException {
        BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        int n = Integer.parseInt(bf.readLine());
        if (n == 1) {
            bw.write("0.000\n");
        } else if (n == 2) {
            bw.write("1.000\n");
        } else {
            for (int i = 1; i <= 100000; i++) adj[i] = new ArrayList<>();
            for (int i = 1; i <= n - 1; i++) {
                String[] str = bf.readLine().split(" ");
                int u = Integer.parseInt(str[0]);
                int v = Integer.parseInt(str[1]);
                adj[u].add(v);
                adj[v].add(u);
            }
            int root = 1;
            while (adj[root].size() == 1) root++;
            dfs1(root, 0);
            dfs2(root, 0);
            double res = 0;
            for (int i = 1; i <= n; i++) {
                res = Math.max(res, 1 + (upavg[i] + downsum[i]) / adj[i].size());
            }
            bw.write(String.format("%.3f\n", res));
        }
        bw.close();
    }
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【RuoYi移动端】HBuild工具插件安装和系统配置manifest.json

一、点【工具】-【插件安装】安装如下工具 二、点【manifest.json】

Golang GORM 单表删除

删除只有一个操作&#xff0c;delete。也是先找到再去删除。 可以删除单条记录&#xff0c;也可以删除多条记录。 var s Studentdb.Debug().Delete(&s, "age ?", 100)fmt.Println(s)[15.878ms] [rows:1] DELETE FROM student WHERE age 100var s Studentdb.De…

基于微信小程序的物流管理系统3txar

在此基础上&#xff0c;结合现有物流管理体系的特点&#xff0c;运用新技术&#xff0c;构建了以 springboot为基础的物流信息化管理体系。首先&#xff0c;以需求为依据&#xff0c;对目前传统物流管理基础业务进行了较为详尽的了解和分析。根据需求分析结果进行了系统的设计&…

opencv进阶14-Harris角点检测-cv2.cornerHarris

类似于人的眼睛和大脑&#xff0c;OpenCV可以检测图像的主要特征并将这 些特征提取到所谓的图像描述符中。然后&#xff0c;可以将这些特征作为数据 库&#xff0c;支持基于图像的搜索。此外&#xff0c;我们可以使用关键点将图像拼接起 来&#xff0c;组成更大的图像。&#x…

UE4与pycharm联合仿真的调试问题及一些仿真经验

文章目录 ue4与pycharm联合仿真的调试问题前言ue4端的debug过程pycharm端 一些仿真经验小结 ue4与pycharm联合仿真的调试问题 前言 因为在实验中我需要用到py代码输出控制信息给到ue4中&#xff0c;并且希望看到py端和ue端分别在运行过程中的输出以及debug调试。所以&#xf…

SVN 项目管理笔记

SVN 项目管理笔记 主要是介绍 SVN 管理项目的常用操作&#xff0c;方便以后查阅&#xff01;&#xff01;&#xff01; 一、本地项目提交到SVN流程 在SVN仓库下创建和项目名同样的文件夹目录&#xff1b;选中本地项目文件&#xff0c;选择SVN->checkout,第一个是远程仓库项…

主机SSH连接VirtualBox NAT网络模式

遇到的问题 虚拟机使用桥接模式配置网络&#xff0c;主机可以ssh连接&#xff0c;但是虚拟机无法访问网络 使用NAT模式配置网络&#xff0c;虚拟机可以访问网络&#xff0c;但是主机无法通过ssh连接 解决方法 配置虚拟机端口转发 1 首先查看虚拟机ip 2 关闭虚拟机 配置端口…

tcl学习之路(五)(Vivado时序约束)

1.主时钟约束 主时钟通常是FPGA器件外部的板机时钟或FPGA的高速收发器输出数据的同步恢复时钟信号等。下面这句语法大家一定不会陌生。该语句用于对主时钟的名称、周期、占空比以及对应物理引脚进行约束。 create_clock -name <clock_name> -periood <period> -wa…

计算机网络 QA

DNS 的解析过程 浏览器缓存。当用户通过浏览器访问某域名时&#xff0c;浏览器首先会在自己的缓存中查找是否有该域名对应的 IP 地址&#xff08;曾经访问过该域名并且没有清空缓存&#xff09;系统缓存。当浏览器缓存中无域名对应的 IP 地址时&#xff0c;会自动检测用户计算机…

VSCode 如何解决 scanf 的输入问题——Code is already running!

文章如何使用 VSCode 软件运行C代码中已经介绍了如何在 VSCode 软件中运行C代码&#xff0c;但最近在使用 scanf 想从键盘输入时&#xff0c;运行代码后显示“Code is already running!”&#xff0c;如下图所示&#xff0c;在输出窗口是无法通过键盘输入的。 解决办法如下&am…

开源ChatGPT系统源码 采用NUXT3+Laravel9后端开发 前后端分离版本

开源ChatGPT系统源码 采用NUXT3Laravel9后端开发 前后端分离版本 ChatGPT是一种基于AI的聊天机器人技术&#xff0c;它可以帮助用户与聊天机器人进行自然语言交流&#xff0c;以解决用户的问题或满足用户的需求。ChatGPT的核心技术是使用自然语言处理&#xff08;NLP&#xff…

Grafana Dashboard 备份方案

文章目录 Grafana Dashboard 备份方案引言工具简介支持的组件要求配置备份安装使用 pypi 安装grafana备份工具配置环境变量使用Grafana Backup Tool 进行备份恢复备份 Grafana Dashboard恢复 Grafana Dashboard结论Grafana Dashboard 备份方案 引言 每个使用 Grafana 的团队同…

小程序定位到 胶囊的三个点大概中间

话不多说&#xff0c;先上效果图 这个功能实现思路: 首先先拿到这一张整图(快捷&#xff0c;精确)然后获取整个导航栏高度(自定义导航栏,非自定义导航栏忽略这一步)获取三个点的做偏移量&#xff0c;把高度和偏移量给到一个定位到盒子&#xff0c;这个盒子里就放这个图片&…

【物联网无线通信技术】NFC从理论到实践(FM17XX)

NFC&#xff0c;全称是Near Field Communication&#xff0c;即“近场通信”&#xff0c;也叫“近距离无线通信”。NFC诞生于2004年&#xff0c;是基于RFID非接触式射频识别技术演变而来&#xff0c;由当时的龙头企业NXP(原飞利浦半导体)、诺基亚以及索尼联合发起。NFC采用13.5…

【Linux】线程篇Ⅱ:

线程Ⅱ &#x1f517;接上篇【线程篇Ⅰ】五、线程库 和 线程 id六、同步与互斥 &#x1f517;接上篇【线程篇Ⅰ】 &#x1f449;【Linux】线程篇Ⅰ&#xff1a;线程和task_struct 执行流的理解、相关接口命令、线程异常、线程的私有和共享 五、线程库 和 线程 id 对于 Linux …

基于前端技术原生HTML、JS、CSS 电子病历编辑器源码

电子病历系统采取结构化与自由式录入的新模式&#xff0c;自由书写&#xff0c;轻松录入。实现病人医疗记录&#xff08;包含有首页、病程记录、检查检验结果、医嘱、手术记录、护理记录等等。&#xff09;的保存、管理、传输和重现&#xff0c;取代手写纸张病历。不仅实现了纸…

百度23Q2财报最新发布:营收利润加速增长,AI+生态战略渐显规模

百度集团-SW(9888.HK)Q2财报已于2023/08/22(美东)盘前发布&#xff0c;二季度百度集团整体收入实现341亿元&#xff0c;同比增长15%;归属百度的净利润(non-GAAP)达到80亿元&#xff0c;同比增长44%。营收和利润双双实现大幅增长&#xff0c;超市场预期。其中&#xff0c;百度核…

【LeetCode-中等题】438. 找到字符串中所有字母异位词

题目 题解一&#xff1a;暴力排序 依次截取三为排序好的字符串拿出来比较 // 方法一&#xff0c;暴力排序List<Integer> res new ArrayList<Integer>();int n s.length();int k p.length();if (n < k) {return res;}char[] chars p.toCharArray();Arrays.s…

无涯教程-PHP - XML GET

XML Get已用于从xml文件获取节点值。以下示例显示了如何从xml获取数据。 Note.xml 是xml文件&#xff0c;可以通过php文件访问。 <SUBJECT><COURSE>Android</COURSE><COUNTRY>India</COUNTRY><COMPANY>LearnFk</COMPANY><PRICE…

复习之web服务器--apache

PS&#xff1a;Vim复制小技巧 一、实验环境 两台虚拟机 (nodea,nodeb)配置ip搭建软件仓库关闭selinux [rootftp Desktop]# hostnamectl set-hostname nodea.westos.org [rootftp Desktop]# hostname nodea.westos.org [rootftp Desktop]# ifconfig enp1s0: flags4163<UP,B…