蓝桥杯2024国B数星星

news2025/4/19 5:58:17

小明正在一棵树上数星星,这棵树有 n 个结点 1,2,⋯,n。他定义树上的一个子图 G 是一颗星星,当且仅当 G 同时满足:

  1. G 是一棵树。
  2. G 中存在某个结点,其度数为 ∣VG​∣−1。其中 ∣VG​∣ 表示这个子图含有的结点数。

两颗星星不相同当且仅当它们包含的结点集合 VG​ 不完全相同。小明想知道这棵树上有多少颗不同的星星包含的结点的数量在区间 [L,R] 中,答案对 1000000007 取模。

输入格式

输入共 n+1 行。

第一行为一个正整数 n。

后面 n−1 行,每行两个正整数表示树上的一条边。

第 n+1 行,两个正整数 L,R。

输出格式

输出共 1 行,一个整数表示答案。

输入输出样例

输入 #1复制

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

输出 #1复制

6

说明/提示

【样例说明】

包含 3 个结点的星星有 5 个,它们的结点集合分别为 {1,2,3},{1,2,4},{1,2,5},{2,4,5},{1,3,6}。

包含 4 个结点的星星有 1 个,它的结点集合为 {1,2,4,5}。

思路:

首先要是一个子图 G 是一棵树,且存在一个节点的度数为 ∣VG​∣−1,也就是子图节点数量减一,显然的,这棵树的层数必须为 2,从另一个方面说,也就是一棵由一个节点,我们可以把它看成根,它连接了剩余 ∣VG​∣−1 个节点,且剩余节点之间没有连边,那么我们明白了要想产生一颗星星他所需要的条件:

  • 节点数量在范围之内。

  • 我们设子图节点数量为 x,那么它的连边数量为 x−1,这也就是树的基本特性。

  • 子图看作一棵树只有两层。

  • 存在一个节点使得它连向了剩余的所有节点,且剩余节点之间没有连边。

知道了这些就好做了,我们去遍历一棵树,每遍历到一个节点,我们就去算以他为根形成满足条件的子图数量即可,那么怎样计算满足条件的子图数量呢?现在我们设当前子图节点数量为 x,首先我们从他给定的范围开始,方案也就是从 x−1 个节点中选 l 个,从 x−1 个节点中选 l+1 个,从 x−1 个节点中选 l+2 个,一直到从 x−1 个节点中选 r 个,将选择的不同数量的相应方案数相加即可,但为什么 x 要减去 1 呢?因为要去掉根,因为根是目前连接剩余 x−1 个节点的,不能算入进去。这一步,我们可以用组合数计算出,提前与处理好阶乘和逆元,可以更快更方便的计算出以节点 i 为根产生的贡献。

代码:

#include <bits/stdc++.h>
#define int long long
using namespace std;
const int mod = 1e9 + 7;
int n, in[100005], inv[100005], fec[100005], f[100005], l, r, res;
vector < int > g[100005];
int C (int x, int y)
{
    return inv[x] * f[y] % mod * f[x - y] % mod;
}
void dfs (int x, int fa)
{
    for (auto y : g[x])
    {
        if (y ^ fa)
            dfs(y, x);
    }
    if (static_cast<int>(g[x].size()) + 1 >= l)
    {
        
        int p = min(r - 1ll, static_cast<int>(g[x].size()));
        for (int i = l - 1;i <= p; ++ i)
        {
            res = (res + C(g[x].size(), i) % mod + mod) % mod;
        }
    }
    
}
signed main()
{
    cin >> n;
    inv[0] = fec[0] = inv[1] = fec[1] = f[0] = f[1] = 1;
    for (register int i = 2;i <= n; ++ i)
    {
        inv[i] = inv[i - 1] * i % mod;
        fec[i] = fec[mod % i] * (mod - mod / i) % mod;
        f[i] = f[i - 1] * fec[i] % mod;
    }
    for (register int i = 1;i < n; ++ i)
    {
        int x, y;
        cin >> x >> y;
        g[x].push_back(y);
        g[y].push_back(x);
    }
    cin >> l >> r;
    dfs(1, 0);
    cout << res << "\n";
    return 0;
}

AC截图:

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

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

相关文章

中科院1区顶刊Expert Systems with Applications ESO:增强型蛇形算法,性能不错

Snake Optimizer&#xff08;SO&#xff09;是一种优化效果良好的新颖算法&#xff0c;但由于自然规律的限制&#xff0c;在探索和开发阶段参数更多是固定值&#xff0c;因此SO算法很快陷入局部优化并慢慢收敛。本文通过引入新颖的基于对立的学习策略和新的动态更新机制&#x…

Flask+Influxdb+grafna构建电脑性能实时监控系统

Influx下载地址&#xff0c;这里下载了以下版本influxdb-1.8.5_windows_amd64.zip 运行前需要先启动Influx数据库&#xff1a; 管理员方式运行cmd->F:->cd F:\influxdb\influxdb-1.8.5-1->influxd -config influxdb.conf&#xff0c;以influxdb.conf配置文件启动数…

若伊微服务版本教程(自参)

第一步 若伊官网下载源码 https://ruoyi.vip/ RuoYi-Cloud: &#x1f389; 基于Spring Boot、Spring Cloud & Alibaba的分布式微服务架构权限管理系统&#xff0c;同时提供了 Vue3 的版本 git clone 到 本地 目录如下&#xff1a; 第二部 参考官网 运行部署说明 环境部署…

ESP32与STM32哪种更适合初学者?

目录 1、ESP32&#xff1a;物联网时代的“网红” 2、STM32&#xff1a;工业界的“常青树” 3、到底谁更容易&#xff1f; 无论是刚入坑的小白&#xff0c;还是想扩展技术栈的老鸟&#xff0c;在选择主力 MCU 时&#xff0c;学习曲线绝对是重要的考量因素。ESP32 以其强大的 …

秒杀秒抢系统开发:飞算 JavaAI 工具如何应对高并发难题?

秒杀、秒抢活动已成为电商促销与吸引流量的常用手段。然而&#xff0c;此类活动所带来的高并发访问&#xff0c;对系统性能构成了巨大挑战。如何确保系统在高并发场景下依然能够稳定、高效运行&#xff0c;成为开发者亟待解决的关键问题。飞算 JavaAI 工具作为一款功能强大的开…

C# 将Excel格式文件导入到界面中,用datagridview显示

界面按钮不做介绍。 主要代码: //用于获取从上一个页面传过来datagridview标题 public DataTable GetHeader { get; set; } private void UI_EXPINFO_Load(object sender, EventArgs e) { //页面加载显示listbox1中可…

Spring Boot整合难点?AI一键生成全流程解决方案

在当今的软件开发领域&#xff0c;Spring Boot 凭借其简化开发流程、快速搭建项目的优势&#xff0c;成为了众多开发者的首选框架。然而&#xff0c;Spring Boot 的整合过程并非一帆风顺&#xff0c;常常会遇到各种难点。而飞算 JavaAI 的出现&#xff0c;为解决这些问题提供了…

MySQL 锁机制全景图:分类、粒度与示例一图掌握

✅ 一、按粒度分类&#xff08;锁的范围大小&#xff09; 1. 表级锁&#xff08;Table Lock&#xff09; 锁住整张表粒度大&#xff0c;开销小&#xff0c;并发性差常见于&#xff1a;MyISAM 引擎 &#x1f4cc; 示例&#xff1a; LOCK TABLES user WRITE; -- 会锁住整个 u…

STM32江科大----------PID算法

声明&#xff1a;本人跟随b站江科大学习&#xff0c;本文章是观看完视频后的一些个人总结和经验分享&#xff0c;也同时为了方便日后的复习&#xff0c;如果有错误请各位大佬指出&#xff0c;如果对你有帮助可以点个赞小小鼓励一下&#xff0c;本文章建议配合原视频使用❤️ 如…

架构师面试(二十九):TCP Socket 编程

问题 今天考察网络编程的基础知识。 在基于 TCP 协议的网络 【socket 编程】中可能会遇到很多异常&#xff0c;在下面的相关描述中说法正确的有哪几项呢&#xff1f; A. 在建立连接被拒绝时&#xff0c;有可能是因为网络不通或地址错误或 server 端对应端口未被监听&#x…

基础学习(4): Batch Norm / Layer Norm / Instance Norm / Group Norm

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言1 batch normalization(BN)2 Layer normalization (LN)3 instance normalization (IN)4 group normalization (GN)总结 前言 对 norm/batch/instance/group 这…

Idea集成AI:CodeGeeX开发

当入职新公司&#xff0c;或者调到新项目组进行开发时&#xff0c;需要快速熟悉项目代码 而新的项目代码&#xff0c;可能有很多模块&#xff0c;很多的接口&#xff0c;很复杂的业务逻辑&#xff0c;更加有与之前自己的代码风格不一致的现有复杂代码 更别提很多人写代码不喜…

HTTP HTTPS RSA

推荐阅读 小林coding HTTP篇 文章目录 HTTP 80HTTP 响应码1xx&#xff1a;信息性状态码&#xff08;Informational&#xff09;2xx&#xff1a;成功状态码&#xff08;Success&#xff09;3xx&#xff1a;重定向状态码&#xff08;Redirection&#xff09;4xx&#xff1a;客户端…

【深度学习与大模型基础】第10章-期望、方差和协方差

一、期望 ——————————————————————————————————————————— 1. 期望是什么&#xff1f; 期望&#xff08;Expectation&#xff09;可以理解为“长期的平均值”。比如&#xff1a; 掷骰子&#xff1a;一个6面骰子的点数是1~6&#x…

Elasticvue-轻量级Elasticsearch可视化管理工具

Elasticvue一个免费且开源的 Elasticsearch 在线可视化客户端&#xff0c;用于管理 Elasticsearch 集群中的数据&#xff0c;完全支持 Elasticsearch 版本 8.x 和 7.x. 功能特色&#xff1a; 集群概览索引和别名管理分片管理搜索和编辑文档REST 查询快照和存储库管理支持国际…

【python】OpenCV—Tracking(10.6)—People Counting

文章目录 1、功能描述2、代码实现3、效果展示4、完整代码5、涉及到的库函数6、参考来自 更多有趣的代码示例&#xff0c;可参考【Programming】 1、功能描述 借助 opencv-python&#xff0c;用 SSD 人形检测模型和质心跟踪方法实现对人群的计数 基于质心的跟踪可以参考 【pyt…

使用KeilAssistant代替keil的UI界面

目录 一、keil Assistant的优势和缺点 二、使用方法 &#xff08;1&#xff09;配置keil的路径 &#xff08;2&#xff09;导入并使用工程 &#xff08;3&#xff09;默认使用keil自带的ARM编译器而非GUN工具链 一、keil Assistant的优势和缺点 在日常学…

FreeRTOS菜鸟入门(五)·空闲任务与阻塞延时的实现

目录 1. 实现空闲任务 1.1 定义空闲任务的栈 1.2 定义空闲任务的任务控制块 1.3 创建空闲任务 2. 实现阻塞延时 2.1 vTaskDelay()函数 2.2 修改 vTaskSwitchContext()函数 3. SysTick 中断服务函数 4. SysTick 初始化函数 通过之前我们了解知道&#xff0c;任…

JBOSS反序列化漏洞解析与防范策略CVE-2017-12149

JBOSS反序列化漏洞解析与防范策略 引言 JBOSS是一个流行的开源应用服务器&#xff0c;广泛应用于企业级应用程序的开发和部署。然而&#xff0c;由于其广泛的使用和复杂的架构&#xff0c;JBOSS也成为了黑客攻击的常见目标。近年来&#xff0c;多个JBOSS漏洞被曝光&#xff0…

Web3技术下数字资产数据保护的实践探索

在这个信息爆炸的时代&#xff0c;数字资产已经成为我们生活中不可或缺的一部分。随着Web3技术的兴起&#xff0c;它以其去中心化、透明性和安全性的特点&#xff0c;为数字资产的管理和保护提供了新的解决方案。本文将探讨Web3技术在数字资产数据保护方面的实践探索&#xff0…