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

这篇具有很好参考价值的文章主要介绍了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
说明

2023河南萌新联赛第(六)场:河南理工大学 C - 旅游,# Java刷题,# DP动态规划,# 图论,c语言,旅游,java
如上图:
如果初始传送至城市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

2023河南萌新联赛第(六)场:河南理工大学 C - 旅游,# Java刷题,# DP动态规划,# 图论,c语言,旅游,java文章来源地址https://www.toymoban.com/news/detail-672215.html

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();
    }
}

到了这里,关于2023河南萌新联赛第(六)场:河南理工大学 C - 旅游的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 2023河南萌新联赛第(二)场:河南工业大学 F - 最短距离

    时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言524288K 64bit IO Format: %lld 题目描述 给定一棵包含 n n n 个顶点的树 T T T ,以及 m m m 个查询请求。每个查询包含三个参数 : x 、 y :x、y : x 、 y 和 k k k 。其中 x x x 和 y y y 是树中的两个顶点, k k k 是一个整数。对于

    2024年02月15日
    浏览(44)
  • L---泰拉瑞亚---2023河南萌新联赛第(三)场:郑州大学

    链接:登录—专业IT笔试面试备考平台_牛客网 来源:牛客网   示例1 只有一把回旋镖,你可以先打两次伤害为3的,再打一次倾尽全力的,造成的伤害为5。总伤害为3+3+5=11,即可获得胜利。 示例2 你可以先把第一把倾尽全力打出去,造成30伤害。接下来用第二把连续攻击50次,

    2024年02月15日
    浏览(61)
  • K-01BFS(2023河南萌新联赛第(五)场:郑州轻工业大学)

    链接:登录—专业IT笔试面试备考平台_牛客网 来源:牛客网   思路: 直接枚举这个图中的拐点 这个拐点是经过左右平移到上下平移或者上下平移到左右平移 假设这个点事左到右后然后再从下到上 左到右就相当于走了个最长上升子序列,然后再从下到上 从下到上的过程你可

    2024年02月13日
    浏览(57)
  • 体验百度文心一言AI大模型生产生成河南大学、太原理工大学、哈尔滨工程大学和青岛大学简介

    河南大学(Henan University),简称“河大”,坐落于中国河南省,是河南省人民政府与中华人民共和国教育部共建高校,国家“双一流”建设高校,入选国家“111计划”、中西部高校基础能力建设工程、卓越医生教育培养计划、卓越法律人才教育培养计划、卓越教师培养计划、

    2024年02月11日
    浏览(53)
  • 太原理工大学javaee程序修改题

    2个 10分(有错误评论区指出哦!) 1where和trim替换(p35) where /where  trim prefix=“where” prefixOverrides=“and” /trim 2用trim实现更新操作 trim prefix=“set” suffixOverrides=“,” /trim 3依赖注入+bean的装配(p88+p101) a 构造方法注入   b 属性setter方法注入 c 基于注解的装配 (暂时这么

    2024年02月03日
    浏览(44)
  • 编译原理选择题【太原理工大学】

    题型未知,选择题暂时这些,后续会补。 1. 规范推导是(B)  A.最左推导  B.最左归约的逆过程  C.最右推导的逆过程  D.最右归约的逆过程 2. 可归前缀是指(A)  A.含有句柄的活前缀  B.活前缀  C.规范句型的前缀  D.句柄 3. 算符优先分析法每次都是对(B)进行归约。 A.短语

    2023年04月13日
    浏览(59)
  • 数据库实验报告【太原理工大学】

    温馨提示:仅供参考! 1.数据定义 创建、修改、删除基本表 创建索引 创建视图 2.数据操作 插入数据 修改数据 删除数据 3.数据查询操作 单表查询 分组统计 连接查询 嵌套查询 集合查询 视图操作 1.使用 SSMS 的图形界面创建用户并授权 使用 SSMS 的图形界面创建登录名 使用

    2023年04月27日
    浏览(70)
  • 操作系统实验报告【太原理工大学】

    温馨提示:仅供参考! 1.程序清单 2.运行结果 ① 简单轮转法: ② 优先数法 3.分析总结 此实验运用了俩种方法进行了程序的调度。在简单轮转方法中,本程序代码中timesch函数下的重要性用priority表示,使用priority次数用尽后,继续执行下一个进程,在进程都结束后,占用cp

    2024年02月06日
    浏览(52)
  • 软件详细设计总复习(二)【太原理工大学】

    1. 适配器模式 适配器是用来将两个原本并不兼容的接口能够在一起工作。就像我们的充电线可以让手机接口和插座接口相互适应,完成工作。 课本上的案例是让机器人模仿其他动物叫,其实就是想让机器人能够适配不同动物的叫声,那么中间必定需要一个桥梁去完成这件事

    2024年02月05日
    浏览(59)
  • 太原理工大学-计算机硬件实验报告

    基于Proteus的运算器仿真 一、实验目的和要求 熟悉Proteus虚拟仿真软件的工作环境,掌握Proteus基本工具的使用方法。 理解简单运算器的组成以及数据传送通路。 验证算术逻辑运算器(74LS181)的算术运算和逻辑运算功能。 二、实验内容和原理 运算器概述 运算器是计算机进行

    2024年02月02日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包