换根DP,LeetCode 2581. 统计可能的树根数目

news2025/2/28 6:20:00

目录

一、题目

1、题目描述

2、接口描述

3、原题链接

二、解题报告

1、思路分析

2、复杂度

3、代码详解


一、题目

1、题目描述

Alice 有一棵 n 个节点的树,节点编号为 0 到 n - 1 。树用一个长度为 n - 1 的二维整数数组 edges 表示,其中 edges[i] = [ai, bi] ,表示树中节点 ai 和 bi 之间有一条边。

Alice 想要 Bob 找到这棵树的根。她允许 Bob 对这棵树进行若干次 猜测 。每一次猜测,Bob 做如下事情:

  • 选择两个 不相等 的整数 u 和 v ,且树中必须存在边 [u, v] 。
  • Bob 猜测树中 u 是 v 的 父节点 。

Bob 的猜测用二维整数数组 guesses 表示,其中 guesses[j] = [uj, vj] 表示 Bob 猜 uj 是 vj 的父节点。

Alice 非常懒,她不想逐个回答 Bob 的猜测,只告诉 Bob 这些猜测里面 至少 有 k 个猜测的结果为 true 。

给你二维整数数组 edges ,Bob 的所有猜测和整数 k ,请你返回可能成为树根的 节点数目 。如果没有这样的树,则返回 0

2、接口描述

class Solution {
public:
    int rootCount(vector<vector<int>>& edges, vector<vector<int>>& guesses, int k) {
        
    }
};

3、原题链接

2581. 统计可能的树根数目


二、解题报告

1、思路分析

暴力思路:查询每一个节点作为根时的猜对的数目

遍历一次为O(N),总的时间复杂度为O(N^2)

我们发现枚举完x作为根的情况再去枚举其邻接点y作为根,只会改变x,y之间的关系

也就是说,每个节点作为根的情况和其相邻节点作为根的情况具有转移关系

我们先以0为根跑一遍,统计猜测正确的数目tot

以那么0的邻接点x的猜测数目就是tot - isguessed(x, y) + isguessed(y, x)

对于猜测数对我们可以哈希表存储

其它看代码即可

2、复杂度

时间复杂度: O(n+m)空间复杂度:O(n+m)

3、代码详解

class Solution {
public:
static constexpr int N = 1e5 + 10;
typedef long long ll;
    int rootCount(vector<vector<int>>& edges, vector<vector<int>>& guesses, int k) {
        vector<vector<int>> g(edges.size() + 1);
        for(auto& p : edges) g[p[0]].emplace_back(p[1]), g[p[1]].emplace_back(p[0]);
        int ret = 0, tot = 0;
        unordered_set<ll> mp;
        for(auto& p : guesses) mp.insert((ll)p[0] << 32 | p[1]);
        function<void(int, int)> dfs = [&](int x, int fa){
            for(int y : g[x])
                if(y != fa)
                    tot += mp.count((ll)x << 32 | y), dfs(y, x);
        };
        dfs(0, -1);
        function<void(int, int, int)> foo = [&](int x, int fa, int t){
            ret += t >= k;
            for(int y : g[x])
                if(y != fa)
                    foo(y, x, t - mp.count((ll)x << 32 | y) + mp.count((ll)y << 32 | x));
        };
        foo(0, -1, tot);
        return ret;
    }
};

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

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

相关文章

特征值和特征向量及其在机器学习中的应用

特征值和特征向量是线性代数中的概念&#xff0c;用于分析和理解线性变换&#xff0c;特别是由方阵表示的线性变换。它们被用于许多不同的数学领域&#xff0c;包括机器学习和人工智能。 在机器学习中&#xff0c;特征值和特征向量用于表示数据、对数据执行操作以及训练机器学…

MVCC【重点】

参考链接 [1] https://www.bilibili.com/video/BV1YD4y1J7Qq/?spm_id_from333.1007.top_right_bar_window_history.content.click&vd_source0cb0c5881f5c7d76e7580fbd2f551074 [2]https://www.cnblogs.com/jelly12345/p/14889331.html [3]https://xiaolincoding.com/mysql…

第十三篇【传奇开心果系列】Python的文本和语音相互转换库技术点案例示例:Microsoft Azure的Face API开发人脸识别门禁系统经典案例

传奇开心果博文系列 系列博文目录Python的文本和语音相互转换库技术点案例示例系列 博文目录前言一、实现步骤和雏形示例代码二、扩展思路介绍三、活体检测深度解读和示例代码四、人脸注册和管理示例代码五、实时监控和报警示例代码六、多因素认证示例代码七、访客管理示例代码…

自然语言处理(NLP)中NER如何从JSON数据中提取实体词的有效信息

专栏集锦&#xff0c;大佬们可以收藏以备不时之需&#xff1a; Spring Cloud 专栏&#xff1a;http://t.csdnimg.cn/WDmJ9 Python 专栏&#xff1a;http://t.csdnimg.cn/hMwPR Redis 专栏&#xff1a;http://t.csdnimg.cn/Qq0Xc TensorFlow 专栏&#xff1a;http://t.csdni…

4.5.CVAT——视频标注的详细步骤

文章目录 1. 跟踪模式&#xff08;基础&#xff09;2. 跟踪模式&#xff08;高级&#xff09;3. 带多边形的轨迹模式 追踪模式Track mode &#xff08;视频标注使用&#xff09;——类似pr的动画效果 1. 跟踪模式&#xff08;基础&#xff09; 使用示例&#xff1a; 为一系列…

input css padding

这样控件会跑出外套控件在HTML JSP里面是经常出现的。但有些外国adobe的as控件不存在这种情况&#xff0c;这是因为内层控件定义的时候不能超出外层控件的范围。 修改下&#xff1a;去掉原来css padding&#xff0c;然后加上宽度和高度

electron安装最后一部卡住了?

控制台如下错误 不是的话基本可以划走了 这个很可能是镜像出现问题了&#xff0c;不一定是npm镜像 打开npm的配置文件添加下述 electron_mirrorhttps://cdn.npmmirror.com/binaries/electron/ electron_builder_binaries_mirrorhttps://npmmirror.com/mirrors/electron-build…

一. demo

1. 舞台-场景-控件 import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.scene.layout.Pane; import javafx.scene.layout.VBox; import javafx.stage.Stage;import java.util.Arrays;public class Main e…

Stable Diffusion 3:创新技术引领未来趋势

文章目录 Stable Diffusion 3&#xff1a;创新技术引领未来趋势摘要Stable Diffusion 3 的发布技术发展方向行业影响总结&#xff1a; Stable Diffusion 3&#xff1a;创新技术引领未来趋势 摘要 在当今快速发展的技术领域&#xff0c;Stable Diffusion 3以其卓越的稳定性和创…

FPGA-学会使用vivado中的存储器资源RAM(IP核)

问题 信号源(例如ADC)以1us一个的速率产生12位的数据现要求获得连续1ms内的数据,通过串口以115200的波特率发到电脑。 分析 数据量是1000个 数据速率不匹配 数据内容未知 数据总数据量有限 数据的使用速度低于数据的产生速度 数据生产和消耗的位宽 数据量相对较…

Spring基础——Spring简介

目录 Spring简述Spring起源Spring技术核心1. Spring IoC2. Spring AOP3. Spring Framework4. Spring Boot Spring涉及领域 Spring简述 如果想快速上手spring开发的话这边先给出spring的官方文档 官方教程&#xff1a;spring.io guides 中文教程&#xff08;官方镜像&#xff09…

代码随想录算法训练营day29

题目&#xff1a;491_非递减子序列&#xff08;看了题解&#xff09; 给定一个整型数组, 你的任务是找到所有该数组的递增子序列&#xff0c;递增子序列的长度至少是2。 示例: 输入: [4, 6, 7, 7]输出: [[4, 6], [4, 7], [4, 6, 7], [4, 6, 7, 7], [6, 7], [6, 7, 7], [7,7]…

uniAPP书写,外卖生鲜小程序,源码交付,支持二开!多级分销,创痛无阻!

做餐饮微信分销系统的好处&#xff1f; 分销可以为商家迅速构建一个微信商城&#xff0c;商家通过分销能够快速打开自己的销售渠道&#xff0c;建立一个自己的网上商城系统&#xff0c;帮助商家去更好地进行商品的售卖。通过分销能够快速完成店铺的装修&#xff0c;完成商品的上…

Mysql的储存引擎

储存引擎介绍 1. 文件系统 操作系统存取数据的一种机制 2. 文件系统类型 不管使用什么文件系统&#xff0c;数据内容不会变化 不同的是&#xff0c;存储空间、大小、速度 3. MySQL存储引擎 可以理解为&#xff0c;MySQL的“文件系统”&#xff0c;只不过功能更加强大 4. MySQL…

SMTP地址如何获得?SMTP服务器地址是什么?

SMTP服务器地址怎么看&#xff1f;获取SMTP服务器地址的方法&#xff1f; 当我们需要发送邮件时&#xff0c;SMTP地址则成为了连接邮件服务器的重要桥梁。那么&#xff0c;SMTP地址究竟是什么呢&#xff1f;我们又该如何获得它呢&#xff1f;接下来&#xff0c;让蜂邮EDM来探讨…

三维基因组|基因组结构 (2)

本系列将更新三维基因组相关内容&#xff0c;欢迎关注&#xff01; 二维顺式元件 术语 cis 源自拉丁语词根“cis”&#xff0c;意思是“同一侧”。相比之下&#xff0c;“trans”一词来自拉丁语词根“trans”&#xff0c;意思是“对面”。在分子生物学中&#xff0c;顺式调控元…

从全国首款到全球首款,康华生物凭“创新+出海”领跑国产疫苗赛道

2024年&#xff0c;是国内首个上市销售的人二倍体细胞狂犬病疫苗上市销售的第十周年&#xff0c;也是成都本土企业康华生物成立的第二十个周年。 值此20周年之际&#xff0c;康华生物于2月27日在成都举办“疫苗创新与疾病预防”论坛&#xff0c;遍邀来自研发界、疾控界等各类专…

SINAMICS V90 指导手册 第3章 驱动和电机安装

驱动安装 安装方向和间距 方向&#xff1a; SINAMICS V90 200V系列中&#xff0c;400W和700W型号的驱动器可同时支持垂直以及水平安装&#xff0c;其他型号的驱动仅支持垂直安装。 间距&#xff1a; 安装间距 注意&#xff1a;当满足下列任一条件时&#xff0c;驱动应降额至…

安卓使用okhttpfinal下载文件,附带线程池下载使用

1.导入okhttp包 implementation cn.finalteam:okhttpfinal:2.0.7 2.单个下载 package com.example.downloading;import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle; import android.util.Log; import android.view.View;import java.io.File;import c…

前端配置开发环境,新电脑配置前端开发环境,Vue开发环境配置的详细过程(前端开发环境配置,电脑重置后配置前端开发环境)

简介&#xff1a;有时候&#xff0c;我们需要在新电脑 或者 电脑重置后&#xff0c;配置前端开发环境&#xff0c;具体都需要安装什么软件和插件&#xff0c;这里来记录一下&#xff08;文章适合新手和小白&#xff0c;大佬可以带过&#xff09;。 ✨前端开发环境&#xff0c;需…