首页/新闻资讯/正文详情

数树【牛客tracker 每日一题】

发布时间:2026/9/24 17:46:07 来源:云帆数科 栏目:资讯中心
数树【牛客tracker  每日一题】
数树时间限制1 秒空间限制256M网页链接牛客tracker牛客tracker 每日一题完成每日打卡即可获得牛币。获得相应数量的牛币能在【牛币兑换中心】换取相应奖品助力每日有题做丰盈牛币日益多题目描述「开导」众所周知树是一种特殊的图。众所周知二导出子图是由该图顶点的一个子集和该图中两端均在该子集的所有边的集合组成的图。注1二叉树是有向图。注2有向图的导出子图还是有向图。小沙有n nn个节点他需要你构造出一棵有根二叉树使得二叉树的所有导出子图是一棵满二叉树的数目尽可能多。请问构造出来的有根二叉树的所有导出子图是一棵满二叉树的数目最多是多少你能帮帮不会数树的小沙吗输入描述第一行读入一个整数T TT代表多组样例。随后T TT行每行输入一个正整数n nn。保证有1 ≤ T ≤ 10 5 1 \le T \le 10^51≤T≤1051 ≤ n ≤ 10 18 1 \le n \le 10^{18}1≤n≤1018。输出描述对于每组样例输出一行整数代表答案。由于答案过大所以请输出答案对10 9 7 10^9 71097取模的值。示例 1输入10 1 2 3 4 5 6 7 8 9 10输出1 2 4 5 7 8 11 12 14 15说明对于7 77个节点的最优二叉树为1 / \ 2 3 / \ / \ 4 5 6 7其11 1111个导出子图为满二叉树的有即1 11整棵1 11节点1 , 2 , 3 1,2,31,2,32 22节点2 , 4 , 5 2,4,52,4,5与3 , 6 , 7 3,6,73,6,77 77单节点11 1111种。数据范围与提示1 ≤ T ≤ 10 5 1 \le T \le 10^51≤T≤1051 ≤ n ≤ 10 18 1 \le n \le 10^{18}1≤n≤1018答案对10 9 7 10^9 71097取模核心思路单节点本身是满二叉树故至少有n nn个要让满二叉树导出子图尽可能多应把树构造成尽量“满”的形态完全二叉树使得大小分别为1 , 3 , 7 , 15 , … 1, 3, 7, 15, \dots1,3,7,15,…即2 k − 1 2^k - 12k−1的满二叉树子树数量最多答案即为这些满二叉树子树的计数之和。由于n nn可到10 18 10^{18}1018需要按层递推/二分计算各规模的满二叉树个数再对10 9 7 10^9 71097取模。解题思路本题是构造最优二叉树 递推计数的数学问题。要求构造一棵有根二叉树使得其所有导出子图中是满二叉树完美二叉树的数量最多并输出这个最大数量对10 9 7 10^971097取模的结果。经过分析最优构造是一棵完全二叉树答案等于该完全二叉树中所有节点的“完美高度”之和。1. 问题等价转化满二叉树完美二叉树每个非叶子节点都有两个子节点且所有叶子节点在同一层。节点数必然为2 h − 1 2^h - 12h−1h hh为高度。导出子图选取原二叉树的一些节点保留两端都在该子集中的边形成的子图。若该子图是一棵满二叉树则它是一棵完美二叉树。最优构造为了让满二叉树导出子图尽可能多应将树构造成完全二叉树节点从上到下、从左到右依次排列。关键观察在完全二叉树中对于任意一个节点它可以作为根的满二叉树导出子图的数量等于从该节点开始向下连续的“满层”数即完美高度。例如一个叶子节点的完美高度为1 11只包含自己如果一个节点的左右子树都是满的且高度相同则它的完美高度为1 子树完美高度 1 \text{子树完美高度}1子树完美高度。因此总答案就是完全二叉树中所有节点的完美高度之和。2. 递推公式推导设完全二叉树的节点数为n nn。令m n 1 m n 1mn1。观察样例与代码答案r rr可以通过以下循环计算m n 1 r 0 while m 1: r m - 1 m m // 2例如n 7 n 7n7m 8 m 8m8r 7 3 1 11 r 7 3 1 11r73111。n 6 n 6n6m 7 m 7m7r 6 2 8 r 6 2 8r628。n 5 n 5n5m 6 m 6m6r 5 2 7 r 5 2 7r527。这个公式的直观意义在完全二叉树中每一层的节点数之和减去该层满二叉树的根数量累加起来恰好等于所有节点的完美高度之和。具体地m − 1 n m-1 nm−1n是总节点数然后m / 2 − 1 m/2 - 1m/2−1是上一层可以形成的满二叉树数量依此类推。3. 算法实现读入测试组数T TT。对于每组数据读入n nn。令m n 1 m n 1mn1初始化答案ans 0。当m 1 m 1m1时ans m - 1m 1即整除 2输出ans % (10^97)。4. 复杂度分析时间复杂度每次循环m mm减半循环次数为O ( log ⁡ n ) O(\log n)O(logn)。T ≤ 10 5 T \le 10^5T≤105n ≤ 10 18 n \le 10^{18}n≤1018总运算量约为10 5 × 60 6 × 10 6 10^5 \times 60 6 \times 10^6105×606×106非常快。空间复杂度O ( 1 ) O(1)O(1)仅使用几个变量。总结通过分析满二叉树导出子图的性质得出最优构造是完全二叉树且答案为所有节点的完美高度之和。利用m n 1 m n1mn1的不断右移累加可以快速计算该和。算法简洁高效完美处理n nn高达10 18 10^{18}1018的数据范围。代码简要说明使用long long存储n nn和中间变量m mm。循环条件m 1每次ans m - 1后m 1。最后输出ans % mod其中mod 1e97。输入输出使用cin/cout并关闭同步加速处理大量测试数据。代码内容#includebits/stdc.husingnamespacestd;#defineendl\ntypedeflonglongll;typedefunsignedlonglongull;typedefvectorvectorllvvt;typedefpairll,llpll;constll N1e310;constll INF1e18;constll M1e610;constll mod1e97;ll n;voidsolve(){cinn;ll r0;n;while(n1){rn-1;n1;}coutr%modendl;}intmain(){ios::sync_with_stdio(0);cin.tie(0),cout.tie(0);intT;cinT;while(T--)solve();return0;}

相关推荐

同一模型差出 35.9 个百分点:Harness 工程已成为 Agent 能力的第一变量
同一模型差出 35.9 个百分点:Harness 工程已成为 Agent 能力的第一变量

【摘要】同一 GPT-6 Astra 在标准 Harness 下 ARC-AGI-3 得分 62.7%,切换 Provider Adapter 后可达 98.6%~99.9%,单次评测成本从约 26,098 美元降至 17,332 美元。本文拆解 Harness 的 6 阶段演进路径、3 级优化体系与状态管理方法&#xff0… · 2026/9/24 17:46:07

SpringBoot 配置加载机制源码分析:application.yml、命令行参数与环境变量
SpringBoot 配置加载机制源码分析:application.yml、命令行参数与环境变量

如果这篇文章对你有帮助,欢迎关注我的CSDN账号「来福猿」, 有问题可以在评论区留言,我会一一回复。1. 引言SpringBoot 的「约定优于配置」让开发者可以快速启动一个应用,但真正理解配置加载机制,才能在多环境部署、配置… · 2026/9/24 17:46:00

【Dify】智能旅行顾问应用
【Dify】智能旅行顾问应用

智能工具赋能旅行规划,自动化流程让信息查询与行程设计变得高效便捷。旅行顾问工作流围绕大语言模型和结构化节点设计,聚焦一站式智能出行建议生成,满足多样化的实际需求。 本文介绍该智能旅行顾问Demo的核心结构、流程机制与典型应用场景,解析关键节点与实际效果,帮助自… · 2026/9/24 17:46:00

C盘清理全攻略:7款免费磁盘分析工具与实操技巧
C盘清理全攻略:7款免费磁盘分析工具与实操技巧

1. C盘飘红这件事,到底难在哪C盘飘红几乎是每个Windows用户都会遇到的经典问题。你正赶着交方案,或者游戏刚加载到一半,右下角突然弹出一个“磁盘空间不足”的提示,低头一看C盘那条进度条已经红得发紫。更让人抓狂的是&#xff0c… · 2026/9/24 19:58:02

C盘爆满怎么清理?7款免费磁盘分析工具与实操指南
C盘爆满怎么清理?7款免费磁盘分析工具与实操指南

1. 先搞清楚C盘为什么"飘红",再谈清理C盘飘红这件事,几乎每个用Windows的人都遇到过。你正干活干到一半,右下角突然弹个提示"磁盘空间不足",打开"此电脑"一看,C盘那条进度条红得刺眼。第… · 2026/9/24 19:58:02

Kata Containers落地实践:从runc切换的隔离方案与性能调优
Kata Containers落地实践:从runc切换的隔离方案与性能调优

1. 为什么我把集群的默认运行时从 runc 换成了 Kata Containers先讲一段我自己经历过的场景。之前我负责一个多租户的数据分析平台,用户会上传自己写的 Python 脚本和模型,在 Kubernetes 集群上跑批处理任务。功能上线半年后,安全团队做了次威… · 2026/9/24 19:58:02

构建与发布Compositor完全指南:Xcode编译、Developer ID签名、公证与自动更新
构建与发布Compositor完全指南:Xcode编译、Developer ID签名、公证与自动更新

构建与发布Compositor完全指南:Xcode编译、Developer ID签名、公证与自动更新 【免费下载链接】Compositor The Photoshop alternative for Mac 项目地址: https://gitcode.com/gh_mirrors/compos/Compositor Compositor 是一款免费开源的 Mac 图像编辑器&am… · 2026/9/24 19:58:02

Humanizer 的 IGrammaticalCaseTimeSpanHumanizeStrategy:让 TimeSpan 时长文本按语法格(Grammatical Case)本地化
Humanizer 的 IGrammaticalCaseTimeSpanHumanizeStrategy:让 TimeSpan 时长文本按语法格(Grammatical Case)本地化

开发工具 【免费下载链接】Humanizer Humanizer meets all your .NET needs for manipulating and displaying strings, enums, dates, times, timespans, numbers and quantities 项目地址: https://gitcode.com/gh_mirrors/hu/Humanizer 点击查看 免费下载 导读 … · 2026/9/24 19:58:02

十六进制与RGB色值转换全攻略:从手算原理到在线工具实战
十六进制与RGB色值转换全攻略:从手算原理到在线工具实战

做设计这一行的,几乎没人能躲开颜色值的忽然切换。上午还在和开发对稿,前端丢过来一串#2C3E50,让你确认下这个颜色是不是品牌标准色;下午要导出一个给印刷厂的物料,对方又问你要 RGB 数值是多少。很多刚入行的设计师看… · 2026/9/24 19:57:54

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程
基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为… · 2026/9/24 0:00:13

1D-CNN时间序列建模实战:从Conv1d原理到工业落地
1D-CNN时间序列建模实战:从Conv1d原理到工业落地

简介:面向时间序列数据建模的一维卷积神经网络完整实现,适合深度学习入门者及需要快速验证时序模型的研究者,能够从音频、文本、传感器或股价等序列中挖掘局部特征与时间依赖。压缩包体积很小,只有3KB,内含3个Python脚… · 2026/9/24 0:00:26

柔软的L:汉语语流中被忽视的舌肌张力控制
柔软的L:汉语语流中被忽视的舌肌张力控制

1. 这个“L”不是字母表里的L,而是舌尖上的L最近在几个方言群和语音教学社群里,反复看到有人发一句:“也说字母L:柔软的长舌”。初看以为是英语发音课笔记,点开才发现全是方言爱好者、播音系学生、语言康复师甚至戏曲演… · 2026/9/24 0:00:44

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码