题解:CF2195E
题面Idiot First Search有一棵包含n 1 n 1n1个顶点的二叉树n nn为奇数定点编号为0 , 1 , ⋯ , n 0 , 1 , \cdots , n0,1,⋯,n。每个顶点最多可写入一个字母初始时所有顶点均为空。树的根节点是顶点0 00。在这棵树中顶点0 00是顶点1 11的父节点其余所有节点要么有2 22个子节点要么没有子节点。鲍勃迷失在树中的某个顶点上他希望通过到达顶点0 00逃离这棵树。他自创了一种遍历树的新方式“笨蛋优先搜索”。当鲍勃位于顶点v vv1 ≤ v ≤ n 1 \le v \le n1≤v≤n时他的移动规则如下若顶点v vv是叶子节点鲍勃总是移动到v vv的父节点否则按以下条件以此判断若顶点v vv上没有字母鲍勃在v vv上写入字母L然后移动到v vv的左子节点若顶点v vv上写着L鲍勃将其改为R然后移动到v vv的右子节点若顶点v vv上写着R鲍勃将其擦除然后移动到v vv的父节点。鲍勃移动到相邻顶点恰好需要1 11秒因此完成x xx次移动总共需要x xx秒。由题意可知鲍勃一定能在有限的时间内移动到顶点0 00。对于每个顶点k 1 , 2 , ⋯ , n k {1 , 2 , \cdots , n}k1,2,⋯,n计算鲍勃从顶点k kk出发到顶点0 00所用的总时间以秒为单位。由于数值可能极大输出计算结果对10 9 7 10 ^ 9 71097取模后的值。输入每个测试点包含多个测试用例。测试点的第一行为测试用例的数量t tt1 ≤ t ≤ 10 4 1 \le t \le 10^41≤t≤104。每个测试用例的输入格式如下所示。对于每个测试用例第一行是一个奇数n nn1 ≤ n ≤ 3 × 10 5 1 1 \le n \le 3 \times 10 ^ 5 11≤n≤3×1051。接下来n nn行每行两个整数l i l _ ili​和r i r _ iri​表示顶点i ii的子节点0 ≤ l i ≤ n , 0 ≤ r i ≤ n 0 \le l _ i \le n , 0 \le r _ i \le n0≤li​≤n,0≤ri​≤n。如果顶点i ii没有子节点则l i r i 0 l _ i r _ i 0li​ri​0。保证输入的是一个合法的、符合题目条件的二叉树。保证一个测试点中所有测试用例的n nn的总和不超过3 × 10 5 1 3 \times 10 ^ 5 13×1051。输出对于每个测试用例在一行内输出n nn个整数τ 1 , τ 2 , ⋯ , τ n \tau _ 1 , \tau _ 2 , \cdots , \tau _ nτ1​,τ2​,⋯,τn​用空格隔开。其中τ k \tau _ kτk​表示从顶点k kk到顶点0 00所需要的时间对10 9 7 10 ^ 9 71097后的结果。思路tag \text{tag}tagdfs“笨蛋优先搜索”的核心走法是先将以k kk为根的子树深度优先遍历一遍再走到其父节点并将以它为根的子树深度优先遍历一遍以此类推移至到顶点0 00。由图论常识可知令s i z e k size _ ksizek​为以顶点k kk为根的子树大小包括顶点k kk自己则深度优先遍历该子树的时间即为2 s i z e k − 2 2 size _ k - 22sizek​−2。再加上走到k kk的父节点的时间即遍历该子树并回到根节点的父节点的时间为2 s i z e k − 1 2 size _ k - 12sizek​−1。记此式为t k t _ ktk​则τ k τ f a k t k \tau _ k \tau _ {fa _ k} t _ kτk​τfak​​tk​省略取模。s i z e k size _ ksizek​容易 dfs 求出第二遍 dfs 求出τ k \tau_ kτk​记得取模最后输出答案故总时间复杂度为O ( ∑ n ) O(\sum n)O(∑n)。代码#includebits/stdc.h#defineintlonglongusingnamespacestd;constintmaxn3e55,mod1e97;intl[maxn],r[maxn],fa[maxn];intsz[maxn],ans[maxn];intn;voiddfs(intx){if(!l[x]){sz[x]1;return;}dfs(l[x]);dfs(r[x]);sz[x]sz[l[x]]sz[r[x]]1;}voiddfs2(intx){ans[x]ans[fa[x]]2*sz[x]-1,ans[x]%mod;if(!l[x])return;dfs2(l[x]);dfs2(r[x]);}voidsolve(){cinn;fa[1]0;for(inti1;in;i){cinl[i]r[i];if(l[i])fa[l[i]]fa[r[i]]i;}dfs(1);ans[0]0;dfs2(1);for(inti1;in;i){coutans[i] ;}cout\n;}signedmain(){ios::sync_with_stdio(0);ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);intt1;cint;while(t--){solve();}return0;}

相关新闻

DeepSeek V4“泄露”性能惊艳:编码数学双封神,程序员必看收藏!

DeepSeek V4“泄露”性能惊艳:编码数学双封神,程序员必看收藏!

DeepSeek V4“泄露”性能惊艳:编码数学双封神,程序员必看收藏! DeepSeek V4在真实编程任务基准SWE-Bench中取得83.7%的优异成绩,可能成为全球最强编码模型。同时,在数学基准AIME和FrontierMath上表现突出。文章分析Dee…

2026/7/5 20:29:16 阅读更多 →
互联网大厂Java小白面试场景:从Spring Boot到微服务架构的循序渐进

互联网大厂Java小白面试场景:从Spring Boot到微服务架构的循序渐进

场景描述 在一家互联网大厂,严肃的面试官正在对Java小白求职者“超好吃”进行技术面试,场景定位为电商业务中微服务架构的设计与实现。面试分为三轮,每轮以3-5个问题展开,逐步深入考察候选人对技术栈和业务场景的理解。 第一轮&am…

2026/7/3 20:09:31 阅读更多 →
天塔之光组态王6.55与西门子1200PLC联机程序3ok,博途15

天塔之光组态王6.55与西门子1200PLC联机程序3ok,博途15

天塔之光组态王6.55和西门子1200PLC联机程序3ok,博途15组态王和西门子PLC的联机调试在工业自动化里算是经典组合了。这次用天塔之光组态王6.55对接S7-1200,博途V15的环境配置,实测下来最头疼的还是通信协议的匹配。先上硬货——直接看PLC数据…

2026/5/17 5:08:07 阅读更多 →

最新新闻

大数据原生集群 (Hadoop2.X为核心) 本地测试环境搭建二

大数据原生集群 (Hadoop2.X为核心) 本地测试环境搭建二

上一篇补充小提示 根据上一篇安装好虚拟机和系统之后,在安装软件之前我有两个对于虚拟机的注意点想送给大家,大家可以不看,但是后期在虚拟机的使用上或许对你有帮助 一、在安装配置集群的时候,涉及到不同机器之间有关IP地址的设…

2026/7/5 21:30:36 阅读更多 →
英雄联盟智能助手Seraphine:5分钟快速上手的游戏增强工具

英雄联盟智能助手Seraphine:5分钟快速上手的游戏增强工具

英雄联盟智能助手Seraphine:5分钟快速上手的游戏增强工具 【免费下载链接】Seraphine 英雄联盟战绩查询工具 项目地址: https://gitcode.com/gh_mirrors/se/Seraphine 你是否厌倦了在英雄联盟中手动查询对手战绩、错过对局接受,或是在BP阶段手忙脚…

2026/7/5 21:26:35 阅读更多 →
求自然对数e的近似值

求自然对数e的近似值

【问题描述】求自然对数e的近似值,当任意项的值小于10-4时结束计算,近似公式为:【输入形式】无 【输出形式】可参考:print("e的近似值值为:{:.6f}".format(e))【样例输入】 【样例输出】 【样例说明】 【评分…

2026/7/5 21:26:35 阅读更多 →
Redis 主从复制,哨兵,集群——(2)哨兵篇

Redis 主从复制,哨兵,集群——(2)哨兵篇

目录 一. Redis 哨兵是什么? 二. Redis 哨兵有什么用? 三. Redis 哨兵数量配备要求 四. 哨兵配置文件详解 五. quorum 投票数详解 5.1 quorum 的含义 5.2 网络抖动导致主观下线 5.3 quorum 票数达到设定值客观下线 六. 最好让所有 redis 服务器…

2026/7/5 21:24:35 阅读更多 →
如何从huggingface快速下载

如何从huggingface快速下载

插播广告一条😂🐶:我制作的一个免费语音识别网站,欢迎体验! 方法一:使用Access Tokens # 安装准备 pip install huggingface-hub # 先登录,它会提示你输入你的 Hugging Face 访问令牌 (Access …

2026/7/5 21:24:35 阅读更多 →
从混乱到优雅:SQL Formatter如何让你的数据库查询代码焕然一新

从混乱到优雅:SQL Formatter如何让你的数据库查询代码焕然一新

从混乱到优雅:SQL Formatter如何让你的数据库查询代码焕然一新 【免费下载链接】sql-formatter A whitespace formatter for different query languages 项目地址: https://gitcode.com/gh_mirrors/sql/sql-formatter 你是否曾面对过同事提交的SQL代码&#…

2026/7/5 21:22:34 阅读更多 →

日新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

月新闻