当前位置: 首页 > news >正文

打卡信奥刷题(3341)用C++实现信奥题 P9414 「NnOI R1-T3」元组

P9414 「NnOI R1-T3」元组

题目背景

小 L 很喜欢树,很喜欢 $ \operatorname{LCA} $,很喜欢有序元组,于是有了这样一道题。

题目描述

对于一棵 $ n $ 点有根树(根为 $ 1 $),定义有序 $ p $ 元组 $ (a_1,a_2,…,a_p) $ 为 $ k $ 级 $ \operatorname{LCA} $ $ p $ 元组当且仅当:

  • $ 1 \le a_1<a_2<…<a_p \le n $

  • 存在 $ x $ 使得对于任意有序严格递增 $ k $ 元组 $ b \subseteq a $ 均满足 $ \operatorname{LCA}_{i=1}^{k}{b_i} = x $。

注意,$ \operatorname{LCA}(x,y) $ 指树上 $ x $ 点和 $ y $ 点的最近公共祖先,且 $ \operatorname{LCA}_{i=1}^{k}{b_i} $ 指的是所有的 $ b_i $ 的 $ \operatorname{LCA} $。

求出 $ k $ 级 $ \operatorname{LCA} $ $ p $ 元组的个数,对 $ 10^9+7 $ 取模。

输入格式

第一行一个整数 $ n,p,k $。

接下来 $ n-1 $ 行,每行两个整数代表一条边的两个端点的编号。

输出格式

输出一个整数代表要求的答案。

输入输出样例 #1

输入 #1

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

输出 #1

1

输入输出样例 #2

输入 #2

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

输出 #2

20

输入输出样例 #3

输入 #3

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

输出 #3

0

说明/提示

【样例 1 解释】

对于样例 $ 1 $,我们发现符合要求的 $ 4 $ 元组只有 $ (3,4,5,6) $。

【数据规模与约定】

对于 $ 100% $ 的数据,$ 2 \le n \le 5000, ,2 \le k \le p \le n $。

提示:本题开启捆绑测试。

  • Subtask 1(10 pts):$ n \le 10 $。
  • Subtask 2(20 pts):$ n \le 20 $。
  • Subtask 3(30 pts):$ n \le 500 $。
  • Subtask 4(10 pts):$ 1 $ 和所有点存在直接连边。
  • Subtask 5(30 pts):无特殊限制。

【贡献名单】

data&check:EstasTonne。(主题库里这个题下一个题号的出题人)

C++实现

#include<bits/stdc++.h>usingnamespacestd;usingll=longlong;constintN=5010,mod=1e9+7;intn,p,k;vector<int>e[N];intsz[N];intf[N][N];ll ans;voiddfs(intu,intfa){sz[u]=1,f[u][0]=f[u][1]=1;for(intj:e[u]){if(j==fa)continue;dfs(j,u);intpsz=sz[u];sz[u]+=sz[j];for(intd=min(sz[u],p);d>=1;d--)for(intt=max(1,d-psz);t<=min(min(k-1,d),sz[j]);t++)f[u][d]+=1ll*f[u][d-t]*f[j][t]%mod,f[u][d]%=mod;}ans+=f[u][p];ans%=mod;}intmain(){scanf("%d%d%d",&n,&p,&k);for(inti=1;i<n;i++){inta,b;cin>>a>>b;e[a].push_back(b);e[b].push_back(a);}dfs(1,-1);cout<<ans<<endl;}

后续

接下来我会不断用C++来实现信奥比赛中的算法题、GESP考级编程题实现、白名单赛事考题实现,记录日常的编程生活、比赛心得,感兴趣的请关注,我后续将继续分享相关内容

http://www.cnnetsun.cn/news/2660642.html

相关文章:

  • 如何快速下载B站4K大会员视频:5分钟完成配置的完整指南
  • Python 操作 MySQL 事务:从入门到避坑
  • 别只盯着平均响应时间!用JMeter汇总报告做性能对比分析的3个实战技巧
  • 共识机制:当三个 Agent 意见不一致时,系统该听谁的?
  • Gemini报告里的异常信号你真的看懂了吗?资深AI架构师教你用3层归因法锁定根因
  • 2026视频提取字幕保姆级教程:制作方法+工具推荐手把手教你
  • Motrix浏览器插件:告别龟速下载,体验终极加速方案
  • Live Room Watcher:直播间数据流架构深度解析与实时监控技术实现
  • 嵌入式Linux电源管理实战:GPIO驱动中的pm_runtime_get_sync到底在做什么?以Zynq平台为例
  • OxyPlot高性能跨平台绘图库:.NET数据可视化深度集成与架构解析
  • 不只是打孔:用Allegro 17.4 Via Array 功能,5分钟搞定PCB板边与电源铺铜的过孔阵列
  • 微软商店装WSL2太占C盘?试试这个‘先装后移’的野路子(Ubuntu 20.04实测)
  • Zotero终极美化插件:打造专业高效的文献管理界面
  • TimeMixer深度解析:如何通过全MLP架构实现多尺度时间序列预测的5大优势
  • 基于Arduino与无源蜂鸣器的电子钢琴制作:从硬件搭建到软件编程全解析
  • 基于ESP32-CAM与YOLO的自主格斗机器人:低成本嵌入式AI实践
  • 科技行业性别平等:从权力结构到系统变革的破局之路
  • Excel高手私藏技巧:用XLOOKUP函数实现动态下拉菜单与数据联动(附模板)
  • ARM DynamIQ架构下Stash操作与缓存一致性处理
  • 英雄联盟玩家必备:League Akari 本地化智能助手完整指南
  • VOFA+上位机连接ESP32:三种协议(FireWater/JustFloat)实战性能对比与避坑指南
  • 实战复盘:用Python+Requests搞定WIPO专利站那个烦人的六宫格验证码(附完整代码)
  • Windows 服务全攻略:从命令行创建到自动化运维的艺术
  • 实时BPM分析器终极指南:三分钟掌握音频节拍检测核心技术
  • 免费开源工具Ofd2Pdf:3分钟实现OFD转PDF的终极解决方案
  • 告别CLI翻译思维:从Juniper模型看如何用YANG设计出清晰好用的网络数据模型
  • 保姆级教程:用MATLAB的Hyperspectral Imaging Library搞定高光谱图像RGB可视化
  • 基于Arduino与BioAmp传感器的心电信号采集与可视化系统搭建指南
  • 从战斗机到家用车:聊聊HUD技术的前世今生与未来AR导航怎么玩
  • B站视频格式转换完整教程:让缓存视频重获新生的终极指南