题解: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 阅读更多 →

最新新闻

基于YOLO的计算机视觉项目实战:从数据标注到边缘部署全流程解析

基于YOLO的计算机视觉项目实战:从数据标注到边缘部署全流程解析

🚀 30款热门AI模型一站整合,DeepSeek/GLM/Qwen 随心用,限时 5 折。 👉 点击领海量免费额度 这类项目最值得关注的不是“智能麻将机器人”这个听起来很酷的标题,而是它背后完整的 计算机视觉项目从开发到落地的全流…

2026/7/5 20:28:20 阅读更多 →
如何在无网络环境下快速提取图片文字?Umi-OCR离线文字识别终极指南

如何在无网络环境下快速提取图片文字?Umi-OCR离线文字识别终极指南

如何在无网络环境下快速提取图片文字?Umi-OCR离线文字识别终极指南 【免费下载链接】Umi-OCR OCR software, free and offline. 开源、免费的离线OCR软件。支持截屏/批量导入图片,PDF文档识别,排除水印/页眉页脚,扫描/生成二维码。…

2026/7/5 20:28:20 阅读更多 →
如何让2008年的老款MacBook Pro也能流畅运行macOS Sonoma:OpenCore Legacy Patcher实战指南

如何让2008年的老款MacBook Pro也能流畅运行macOS Sonoma:OpenCore Legacy Patcher实战指南

如何让2008年的老款MacBook Pro也能流畅运行macOS Sonoma:OpenCore Legacy Patcher实战指南 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 还记得…

2026/7/5 20:28:20 阅读更多 →
重塑音频创作边界:Audacity 开源音频编辑器的技术革新与实践指南

重塑音频创作边界:Audacity 开源音频编辑器的技术革新与实践指南

重塑音频创作边界:Audacity 开源音频编辑器的技术革新与实践指南 【免费下载链接】audacity Audio Editor 项目地址: https://gitcode.com/GitHub_Trending/au/audacity 你是否曾为音频编辑软件的复杂操作界面和昂贵许可费用而却步?是否渴望拥有…

2026/7/5 20:26:20 阅读更多 →
3种方法解放Windows任务栏:RBTray系统托盘最小化终极指南

3种方法解放Windows任务栏:RBTray系统托盘最小化终极指南

3种方法解放Windows任务栏:RBTray系统托盘最小化终极指南 【免费下载链接】rbtray A fork of RBTray from http://sourceforge.net/p/rbtray/code/. 项目地址: https://gitcode.com/gh_mirrors/rb/rbtray 你是否曾为Windows任务栏上堆积如山的窗口图标而烦恼…

2026/7/5 20:26:20 阅读更多 →
企业级AI对话前端部署指南:5步构建安全高效的SillyTavern系统

企业级AI对话前端部署指南:5步构建安全高效的SillyTavern系统

企业级AI对话前端部署指南:5步构建安全高效的SillyTavern系统 【免费下载链接】SillyTavern LLM Frontend for Power Users. 项目地址: https://gitcode.com/GitHub_Trending/si/SillyTavern SillyTavern是一款专为高级用户设计的LLM前端界面,提供…

2026/7/5 20:26:20 阅读更多 →

日新闻

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 阅读更多 →

月新闻