gesp(C++六级)(10)洛谷:P10722:[GESP202406 六级] 二叉树
gesp(C++六级)(10)洛谷:P10722:[GESP202406 六级] 二叉树

题目描述
小杨有⼀棵包含 n n n 个节点的二叉树,且根节点的编号为 1 1 1。这棵二叉树任意⼀个节点要么是白色,要么是黑色。之后小杨会对这棵二叉树进行 q q q 次操作,每次小杨会选择⼀个节点,将以这个节点为根的子树内所有节点的颜色反转,即黑色变成白色,白色变成黑色。
小杨想知道 q q q 次操作全部完成之后每个节点的颜色。
输入格式
第⼀行一个正整数 n n n,表示二叉树的节点数量。
第二行 ( n − 1 ) (n-1) (n−1) 个正整数,第 i i i( 1 ≤ i ≤ n − 1 1\le i\le n-1 1≤i≤n−1)个数表示编号为 ( i + 1 ) (i+1) (i+1) 的节点的父亲节点编号,数据保证是⼀棵二叉树。
第三行一个长度为 n n n 的 01 \texttt{01} 01 串,从左到右第 i i i( 1 ≤ i ≤ n 1\le i\le n 1≤i≤n)位如果为 0 \texttt{0} 0,表示编号为 i i i 的节点颜色为白色,否则为黑色。
第四行⼀个正整数 q q q,表示操作次数。
接下来 q q q 行每行⼀个正整数 a i a_i ai( 1 ≤ a i ≤ n 1\le a_i\le n 1≤ai≤n),表示第 i i i 次操作选择的节点编号。
输出格式
输出一行一个长度为 n n n 的 01 \texttt{01} 01 串,表示 q q q 次操作全部完成之后每个节点的颜色。从左到右第 i i i( 1 ≤ i ≤ n 1\le i\le n 1≤i≤n) 位如果为 0 \texttt{0} 0,表示编号为 i i i 的节点颜色为白色,否则为黑色。
样例 #1
样例输入 #1
6
3 1 1 3 4
100101
3
1
3
2
样例输出 #1
010000
提示
样例解释
第一次操作后,节点颜色为: 011010 \texttt{011010} 011010
第二次操作后,节点颜色为: 000000 \texttt{000000} 000000
第三次操作后,节点颜色为: 010000 \texttt{010000} 010000
数据范围
| 子任务编号 | 得分 | n n n | q q q | 特殊条件 |
|---|---|---|---|---|
| 1 1 1 | 20 20 20 | ≤ 1 0 5 \le 10^5 ≤105 | ≤ 1 0 5 \le 10^5 ≤105 | 对于所有 i ≥ 2 i\ge 2 i≥2,节点 i i i 的父亲节点编号为 i − 1 i-1 i−1 |
| 2 2 2 | 40 40 40 | ≤ 1000 \le 1000 ≤1000 | ≤ 1000 \le 1000 ≤1000 | |
| 3 3 3 | 40 40 40 | ≤ 1 0 5 \le 10^5 ≤105 | ≤ 1 0 5 \le 10^5 ≤105 |
对于全部数据,保证有 n , q ≤ 1 0 5 n,q\le 10^5 n,q≤105。
AC代码(100分)
#include<bits/stdc++.h>
using namespace std;
/*思路: 计算每个节点的操作次数(子节点的反转次数=父节点的反转次数+自身的反转次数) 如果操作次数为偶数,则颜色不变如果操作次数为奇数,则颜色反转
*/
const int N=1e5+10;
int n,x,q,sum[N],ans[N];
vector<int> v[N];//v[i]存i的所有孩子
char s[N];
//dfs函数
void dfs(int x){//计算节点x的答案,然后遍历节点x的所有子节点 ans[x]=s[x]-'0';//将节点x的初始状态从字符转化为数字,存到答案数组中 if(sum[x]%2==1) ans[x]=1-ans[x];//奇数次反转,偶数次不反转for(int i=0;i<v[x].size();i++){//遍历x的所有孩子 int z=v[x][i];//子节点 sum[z]+=sum[x];//子节点的反转次数=父节点的反转次数+自身的反转次数 dfs(z);//深搜子节点 }
}
int main(){cin>>n;for(int i=2;i<=n;i++){cin>>x;v[x].push_back(i);//x是i的父节点 } for(int i=1;i<=n;i++) cin>>s[i];//输入字符串 cin>>q;//输入操作次数 for(int i=1;i<=q;i++){int a; cin>>a;sum[a]++;//计算每个节点作为父节点的操作次数 }dfs(1);//1是根节点 for(int i=1;i<=n;i++) cout<<ans[i];return 0;
}
文末彩蛋:
点击王老师青少年编程主页有更多精彩内容
相关文章:
gesp(C++六级)(10)洛谷:P10722:[GESP202406 六级] 二叉树
gesp(C六级)(10)洛谷:P10722:[GESP202406 六级] 二叉树 题目描述 小杨有⼀棵包含 n n n 个节点的二叉树,且根节点的编号为 1 1 1。这棵二叉树任意⼀个节点要么是白色,要么是黑色。之后小杨会对这棵二叉树…...
7.DP算法
DP 在C中,动态规划(Dynamic Programming,DP)是一种通过将复杂问题分解为重叠子问题来高效求解的算法设计范式。以下是DP算法的核心要点和实现方法: 一、动态规划的核心思想 重叠子问题:问题可分解为多个重…...
2025年2月2日(tcp3次握手4次挥手)
TCP(三次握手和四次挥手)是建立和关闭网络连接的标准过程,确保数据在传输过程中可靠无误。下面是详细解释: 1. 三次握手(TCP连接建立过程) 三次握手是为了在客户端和服务器之间建立一个可靠的连接&#x…...
w186格障碍诊断系统spring boot设计与实现
🙊作者简介:多年一线开发工作经验,原创团队,分享技术代码帮助学生学习,独立完成自己的网站项目。 代码可以查看文章末尾⬇️联系方式获取,记得注明来意哦~🌹赠送计算机毕业设计600个选题excel文…...
Android Studio 正式版 10 周年回顾,承载 Androider 的峥嵘十年
Android Studio 1.0 宣发于 2014 年 12 月,而现在时间来到 2025 ,不知不觉间 Android Studio 已经陪伴 Androider 走过十年历程。 Android Studio 10 周年,也代表着了我的职业生涯也超十年,现在回想起来依然觉得「唏嘘」ÿ…...
【PyQt】lambda函数,实现动态传递参数
为什么需要 lambda? 在 PyQt5 中,clicked 信号默认会传递一个布尔值(表示按钮是否被选中)。如果我们希望将按钮的文本内容传递给槽函数,需要通过 lambda 函数显式传递参数。 这样可以实现将按钮内容传递给槽函数&…...
4 Hadoop 面试真题
4 Hadoop 面试真题 1. Apache Hadoop 3.0.02. HDFS 3.x 数据存储新特性-纠删码Hadoop面试真题 1. Apache Hadoop 3.0.0 Apache Hadoop 3.0.0在以前的主要发行版本(hadoop-2.x)上进行了许多重大改进。 最低要求的Java版本从Java 7增加到Java 8 现在&…...
25寒假算法刷题 | Day1 | LeetCode 240. 搜索二维矩阵 II,148. 排序链表
目录 240. 搜索二维矩阵 II题目描述题解 148. 排序链表题目描述题解 240. 搜索二维矩阵 II 点此跳转题目链接 题目描述 编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性: 每行的元素从左到右升序排列。每列的元素从上到…...
[paddle] 矩阵相关的指标
行列式 det 行列式定义参考 d e t ( A ) ∑ i 1 , i 2 , ⋯ , i n ( − 1 ) σ ( i 1 , ⋯ , i n ) a 1 , i 1 a 2 , i 2 , ⋯ , a n , i n det(A) \sum_{i_1,i_2,\cdots,i_n } (-1)^{\sigma(i_1,\cdots,i_n)} a_{1,i_1}a_{2,i_2},\cdots, a_{n,i_n} det(A)i1,i2,⋯,in…...
何谓共赢?
A和B是人或组织,他们怎样的合作才是共赢呢? 形态1:A提供自己的身份证等个人信息,B用来作贷款等一些事务,A每月得到一笔钱。 A的风险远大于收益,或者B从事的是非法行为; 形态2:A单方面提前终止了与B的合作…...
Kanass基础教程-创建项目
Kanass是一款国产开源免费的项目管理工具,工具简洁易用,开源免费,之前介绍过kanass的一些产品简介及安装配置方法,本文就从如何创建第一个项目来开始kanass上手之旅吧。 1. 创建项目 点击项目->项目添加 按钮进入项目添加页面…...
实验9 JSP访问数据库(二)
实验9 JSP访问数据库(二) 目的: 1、熟悉JDBC的数据库访问模式。 2、掌握预处理语句的使用 实验要求: 1、使用Tomcat作为Web服务器 2、通过JDBC访问数据库,实现增删改查功能的实现 3、要求提交实验报告,将代…...
DeepSeek 核心技术全景解析
DeepSeek 核心技术全景解析:突破性创新背后的设计哲学 DeepSeek的创新不仅仅是对AI基础架构的改进,更是一场范式革命。本文将深入剖析其核心技术,探讨 如何突破 Transformer 计算瓶颈、如何在 MoE(Mixture of Experts)…...
单片机基础模块学习——DS1302时钟芯片
一、DS1302时钟简介 1.与定时器对比 DS1302时钟也称为RTC时钟(Real Time Clock,实时时钟),说到时钟,可能会想到定时器,下表来简单说明一下两者的区别。 定时器(Timer)实时时钟(RTC)精度高,可达微秒级精度较低,多为秒级计时范围短计时范围长2.开发板所在位置 下面方框里…...
Vue+Echarts 实现青岛自定义样式地图
一、效果 二、代码 <template><div class"chart-box"><chart ref"chartQingdao" style"width: 100%; height: 100%;" :options"options" autoresize></chart></div> </template> <script> …...
FIR滤波器:窗函数法
一、FIR滤波器基础 FIR(有限脉冲响应)滤波器的三大特点: 绝对稳定:没有反馈回路,不会出现失控振荡 线性相位:信号通过后波形不失真 直观设计:通过窗函数法、频率采样法等方法实现 二、窗函…...
【AI】探索自然语言处理(NLP):从基础到前沿技术及代码实践
Hi ! 云边有个稻草人-CSDN博客 必须有为成功付出代价的决心,然后想办法付出这个代价。 目录 引言 1. 什么是自然语言处理(NLP)? 2. NLP的基础技术 2.1 词袋模型(Bag-of-Words,BoWÿ…...
M|哪吒之魔童闹海
rating: 8.5 豆瓣: 8.5 上映时间: “2025” 类型: M动画 导演: 饺子 主演: 国家/地区: 中国大陆 片长/分钟: 144分钟 M|哪吒之魔童闹海 制作精良,除了剧情逻辑有一点瑕疵,各方面都很到位。总体瑕不掩瑜。 上映时间: &…...
DeepSeek 介绍及对外国的影响
DeepSeek 简介 DeepSeek(深度求索)是一家专注实现 AGI(人工通用智能)的中国科技公司,2023 年成立,总部位于杭州,在北京设有研发中心。与多数聚焦具体应用(如人脸识别、语音助手&…...
力扣动态规划-18【算法学习day.112】
前言 ###我做这类文章一个重要的目的还是记录自己的学习过程,我的解析也不会做的非常详细,只会提供思路和一些关键点,力扣上的大佬们的题解质量是非常非常高滴!!! 习题 1.下降路径最小和 题目链接:931. …...
DBASE DBF数据库文件解析
基于Java实现DBase DBF文件的解析和显示 JDK19编译运行,实现了数据库字段和数据解析显示。 首先解析数据库文件头代码 byte bytes[] Files.readAllBytes(Paths.get(file));BinaryBufferArray bis new BinaryBufferArray(bytes);DBF dbf new DBF();dbf.VersionN…...
【ESP32】ESP-IDF开发 | WiFi开发 | UDP用户数据报协议 + UDP客户端和服务器例程
1. 简介 UDP协议(User Datagram Protocol),全称用户数据报协议,它是一种面向非连接的协议,面向非连接指的是在正式通信前不必与对方先建立连接, 不管对方状态就直接发送。至于对方是否可以接收到这些数据内…...
【Qt】常用的容器
Qt提供了多个基于模板的容器类,这些容器类可用于存储指定类型的数据项。例如常用的字符串列表类 QStringList 可用来操作一个 QList<QString>列表。 Qt的容器类比标准模板库(standard template library,STL)中的容器类更轻巧、使用更安全且更易于使…...
tiktok 国际版抖抖♬♬ X-Bogus参数算法逆向分析
加密请求参数得到乱码,最终得到X-Bogus...
【AI】人工智能没那么神秘!
AI是什么? 人工智能(Artificial Intelligence),英文缩写为AI。 AI人工智能不是简单的应用程序,而是一类技术,包含机器学习、自然语言处理、计算机视觉等多个领域。AI系统通常由算法、数据、模型和代码组成…...
C#面试常考随笔9:什么是闭包?
最简单的例子: Lambda可以访问Lambda表达式块外部的变量,叫闭包。 定义 闭包是指有权访问另一个函数作用域中的变量的函数。即使该函数已经执行完毕,其作用域内的变量也不会被销毁,而是会被闭包所捕获并保留,供闭包…...
记录 | 基于MaxKB的仿小红书旅游文章AI制作(含图文、视频)
目录 前言一、创建应用Step1 表单Step2 AI对话生成旅游攻略提炼场景Step3 图片生成Step4 视频生成Step5 指定回复二、检验效果三、整体结构视图更新时间前言 参考文章: 自己的感想 想复现文章的内容你需要先学习下我之前的三篇文章中的记录。 1、记录 | Docker的windows版安装…...
C++ Primer 命名空间的using声明
欢迎阅读我的 【CPrimer】专栏 专栏简介:本专栏主要面向C初学者,解释C的一些基本概念和基础语言特性,涉及C标准库的用法,面向对象特性,泛型特性高级用法。通过使用标准库中定义的抽象设施,使你更加适应高级…...
c语言(关键字)
前言: 感谢b站鹏哥c语言 内容: 栈区(存放局部变量) 堆区 静态区(存放静态变量) rigister关键字 寄存器,cpu优先从寄存器里边读取数据 #include <stdio.h>//typedef,类型…...
Kafka SASL/SCRAM介绍
文章目录 Kafka SASL/SCRAM介绍1. SASL/SCRAM 认证机制2. SASL/SCRAM 认证工作原理2.1 SCRAM 认证原理2.1.1 密码存储和加盐2.1.2 SCRAM 认证流程 2.2 SCRAM 认证的关键算法2.3 SCRAM 密码存储2.4 SCRAM 密码管理 3. 配置和使用 Kafka SASL/SCRAM3.1 Kafka 服务器端配置3.2 创建…...
