藍橋杯2024國B數星星

小明正在一棵樹上數星星,這棵樹有?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.pswp.cn/bicheng/77168.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/77168.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/77168.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Django從零搭建賣家中心登陸與注冊實戰

在電商系統開發中&#xff0c;賣家中心是一個重要的組成部分&#xff0c;而用戶注冊與登陸則是賣家中心的第一步。本文將詳細介紹如何使用Django框架從零開始搭建一個功能完善的賣家注冊頁面&#xff0c;包括前端界面設計和后端邏輯實現。 一、項目概述 我們將創建一個名為sel…

Opencv使用cuda實現圖像處理

main.py import os import cv2 print(fOpenCV: {cv2.__version__} for python installed and working) image cv2.imread(bus.jpg) if image is None:print("無法加載圖像1") print(cv2.cuda.getCudaEnabledDeviceCount()) cv2.cuda.setDevice(0) cv2.cuda.printCu…

如何編制實施項目管理章程

本文檔概述了一個項目管理系統的實施計劃,旨在通過統一的業務規范和技術架構,加強集團公司的業務管控,并規范業務管理。系統建設將遵循集團統一模板,確保各單位項目系統建設的標準化和一致性。 實施范圍涵蓋投資管理、立項管理、設計管理、進度管理等多個方面,支持項目全生…

B端可視化方案,如何助力企業精準決策,搶占市場先機

在當今競爭激烈的商業環境中&#xff0c;企業需要快速、準確地做出決策以搶占市場先機。B端可視化方案通過將復雜的企業數據轉化為直觀的圖表和儀表盤&#xff0c;幫助企業管理層和業務人員快速理解數據背后的業務邏輯&#xff0c;從而做出精準決策。本文將深入探討B端可視化方…

基于FPGA的一維時間序列idct變換verilog實現,包含testbench和matlab輔助驗證程序

目錄 1.算法運行效果圖預覽 2.算法運行軟件版本 3.部分核心程序 4.算法理論概述 4.1 DCT離散余弦變換 4.2 IDCT逆離散余弦變換 4.3 樹結構實現1024點IDCT的原理 5.算法完整程序工程 1.算法運行效果圖預覽 (完整程序運行后無水印) matlab仿真結果 FPGA仿真結果 由于FP…

Android基礎教程 - 學習完成記錄

視頻學習教程 視頻鏈接&#xff1a;2022 最新 Android 基礎教程&#xff0c;從開發入門到項目實戰&#xff0c;看它就夠了&#xff0c;更新中_嗶哩嗶哩_bilibili 學習下來&#xff0c;有遇到很多問題&#xff0c;在 chatgpt、claude 和 Android Studio 插件通義千問的幫助下&…

Web開發-JavaEE應用原生和FastJson反序列化URLDNS鏈JDBC鏈Gadget手搓

知識點&#xff1a; 1、安全開發-JavaEE-原生序列化-URLDNS鏈分析 2、安全開發-JavaEE-FastJson-JdbcRowSetImpl鏈分析 利用鏈也叫"gadget chains"&#xff0c;我們通常稱為gadget&#xff1a; 1、共同條件&#xff1a;實現Serializable或者Externalizable接口&…

OpenCV操作函數

1、cv2.imread&#xff08;&#xff09; 2、 cv2.imshow&#xff08;&#xff09; 3、 cv2.waitKey&#xff08;&#xff09; 4、cv2.imwrite&#xff08;&#xff09; 5、cv2.selectROI&#xff08;&#xff09; 6、 cv2.VideoCapture() 7、cv2.cvtColor&#xff08;&#xff…

AI編程新紀元:GitHub Copilot、CodeGeeX與VS2022的聯合開發實踐

引言:AI編程時代的到來 在軟件開發領域,我們正站在一個歷史性的轉折點上。GitHub Copilot、CodeGeeX等AI編程助手的出現,結合Visual Studio 2022的強大功能,正在重塑代碼編寫的本質。這不僅是工具層面的革新,更是開發范式的根本轉變。能夠有效利用這些AI工具的開發者將跨…

[特殊字符] MySQL MCP 開發實戰:打造智能數據庫操作助手

&#x1f4a1; 簡介&#xff1a;本文詳細介紹如何利用MCP&#xff08;Model-Control-Panel&#xff09;框架開發MySQL數據庫操作工具&#xff0c;使AI助手能夠直接執行數據庫操作。 &#x1f4da; 目錄 引言MCP框架簡介項目架構設計開發環境搭建核心代碼實現錯誤處理策略運行和…

Dify部署過程中的錯誤和解決方案匯總

本文僅限于記錄Dify部署及使用過程中的BUG和解決方案 1. Dify配置SearXNG時報錯&#xff1a; 報錯內容&#xff1a; PluginInvokeError: {"args":{},"error_type":"ToolProviderCredentialValidationError","message":"Error 4…

C#中async await異步關鍵字用法和異步的底層原理

目錄 C#異步編程一、異步編程基礎二、異步方法的工作原理三、代碼示例四、編譯后的底層實現五、總結 C#異步編程 一、異步編程基礎 異步編程是啥玩意兒 就是讓程序在干等著某些耗時操作&#xff08;比如等網絡響應、讀寫文件啥的&#xff09;的時候&#xff0c;能把線程騰出來…

安全教育知識競賽答題小程序怎么做

以下是制作安全教育知識競賽答題小程序的一般步驟&#xff1a; 一、準備階段 注冊小程序賬號&#xff1a;前往微信公眾平臺&#xff0c;注冊一個小程序賬號&#xff0c;主體類型可根據實際情況選擇個人或企業等&#xff0c;注冊成功后登錄獲取appid。 下載安裝開發工具&#x…

記錄待辦事項的便簽軟件有沒有推薦的?

在快節奏的現代生活中&#xff0c;我們每天都要處理大量的工作任務和生活瑣事&#xff0c;稍有不慎就可能遺漏重要事項。你是否經常遇到這樣的情況&#xff1a;明明記得有件事要做&#xff0c;卻怎么也想不起來是什么&#xff1b;或者手頭同時有好幾項任務&#xff0c;卻不知道…

實驗四 中斷實驗

一、實驗目的 掌握中斷服務程序的編寫。 二、實驗電路 三、實驗內容 1&#xff0e;實驗用PC機內部的中斷控制器8259A&#xff0c;中斷源用TPC-ZK實驗箱上的單脈沖電路&#xff0c;將單脈沖電路的輸出接中斷請求信號IRQ&#xff0c;每按一次單脈沖按鍵產生一次…

React 項目src文件結構

SCSS 組件庫 SCSS為預處理器 支持除原生CSS外的其他語句 別名路徑 在項目下的第一級目錄就加入craco.config.js文件并且修改packpage.js 中的部分 // 擴展webpage的配置const path require(path)module.exports {// exports配置webpack:{// 配置別名alias:{:path.resolve(__d…

Cursor入門教程-JetBrains過度向

Cursor使用筆記 **前置&#xff1a;**之前博主使用的是JetBrains的IDE&#xff0c;VSCode使用比較少&#xff0c;所以會盡量朝著JetBrains的使用習慣及樣式去調整。 一、設置語言為中文 如果剛上手Cursor&#xff0c;那么肯定對Cursor中的眾多選項配置項不熟悉&#xff0c;這…

Linux上位機開發實踐(SoC和MCU的差異)

【 聲明&#xff1a;版權所有&#xff0c;歡迎轉載&#xff0c;請勿用于商業用途。 聯系信箱&#xff1a;feixiaoxing 163.com】 soc一般是指跑linux的芯片&#xff0c;而mcu默認是跑rtos的芯片&#xff0c;兩者在基本原理方面其實差異不大。只不過&#xff0c;前者由于性能的原…

離線導出和安裝Python庫

詳細介紹&#xff1a;離線導出和安裝Python庫 常用命令&#xff1a; 生成requirement.txt文件 pip freeze > requirement.txt離線批量下載庫 pip download -d packages -r requirement.txt離線批量安裝庫 pip install --no-index --find-links./ -r requirement.txt

基于Vue Node.js的電影售票網站的設計與實現(源碼+lw+部署文檔+講解),源碼可白嫖!

摘要 互聯網技術的成熟和普及&#xff0c;勢必會給人們的生活方式帶來不同程度的改變。越來越多的經營模式中都少不了線上運營&#xff0c;互聯網正強力推動著社會和經濟發展。國人對民族文化的自信和不同文化的包容&#xff0c;再加上電影行業的發展&#xff0c;如此繁榮吸引…