首页 > 编程语言 >CCF-GESP计算机学会等级考试2024年6月六级C++T2二叉树

CCF-GESP计算机学会等级考试2024年6月六级C++T2二叉树

时间:2024-07-08 12:28:13浏览次数:21  
标签:dfs int T2 cin C++ 100005 次数 二叉树 节点

解析:

详见代码:

#include<bits/stdc++.h>
using namespace std;
int n;
int q;
string s;
int p[100005];//p[i]表示i的父节点
int a[100005];//对第i个节点的操作次数
int b[100005];//第i个节点变化的总次数
int dfs(int x){
    if (b[x]>0) return b[x];//如果已计算,直接返回结果
    b[x]=a[x]+dfs(p[x]);//当前节点的操作次数加上父节点的总操作次数
    return b[x];
}
int main() {
    cin>>n;
    for(int i=2;i<=n;i++){
        cin>>p[i];
    }
    cin>>s;
    cin>>q;
    for(int i=1;i<=q;i++){
        int op;
        cin>>op;
        a[op]++;
    }
    b[1]=a[1]+2;//多两次操作不影响结果,可以保证b数组都大于0
    for(int i=1;i<=n;i++){
        if(b[i]==0){//如果没计算
            dfs(i);//递归计算
        }
    }
    for(int i=0;i<n;i++){//枚举字符串的每一位
        bool x=s[i]-'0';//转换成布尔值
        if (b[i+1]%2==0){//偶数次
            cout<<x;//直接输出
        }else{//奇数次
            cout<<!x;//输出相反
        }
    }
    return 0;
}

 

标签:dfs,int,T2,cin,C++,100005,次数,二叉树,节点
From: https://blog.csdn.net/qq_36230375/article/details/140265232

相关文章

  • CCF-GESP计算机学会等级考试2024年6月五级C++T2小杨的幸运数字
    解析:对每个数分解质因数,并统计质因数个数,详见代码:#include<bits/stdc++.h>usingnamespacestd;intn;intmain(){cin>>n;for(inti=1;i<=n;i++){intx;cin>>x;intcnt=0;//质因数个数for(intj=2;j*j......
  • CCF-GESP计算机学会等级考试2024年6月五级C++T1黑白格
    解析: 先把每行做前缀和(方便求区间和),枚举开始列和结束列,按行做双指针求和,找到和大于等于k的最小矩阵,时间复杂度O(N^3)。#include<bits/stdc++.h>usingnamespacestd;intm,n,k;inta[105][105];intans=1e9;intmain(){cin>>n>>m>>k;for(inti=1;i<=n;i++......
  • 算法力扣刷题 三十五【二叉树基础和递归遍历】
    前言进入二叉树学习。继续。一、二叉树基础理论理论篇——参考链接以下是大纲:二、遍历方式学习递归法实现前、中、后遍历方法。“输入”阶段此处用了第一次递归法实现根据题目的双指针操作,传递递归的参数。解释递归(1)递归:自己调用自己。重复执行一段代码,但是......
  • 0算法基础——深度优先搜索(c++)
            搜索是对一个事物的查询。他可以给出两点最短路,还能求方案数等等。好的,正文开始:深度优先搜索    深度优先搜索(dfs)顾名思义就是从深度的角度出发进行搜索。具体来讲,就是完成一个步骤后将它的每一个子步骤都试一遍,注意是先搜完子步骤(一般认为子步骤层......
  • C++ Boost 字符串处理库
    Boost库是一个由C/C++语言的开发者创建并更新维护的开源类库,其提供了许多功能强大的程序库和工具,用于开发高质量、可移植、高效的C应用程序。Boost库可以作为标准C库的后备,通常被称为准标准库,是C标准化进程的重要开发引擎之一。使用Boost库可以加速C应用程序的开发过程,提高代码质......
  • SSM-企业人事信息管理系统-98194(免费领源码)可做计算机毕业设计JAVA、PHP、爬虫、APP、
    企业人事信息管理系统的设计与实现摘 要由于数据库和数据仓库技术的快速发展,企业人事信息管理系统建设越来越向模块化、智能化、自我服务和管理科学化的方向发展。人事管理系统对处理对象和服务对象,自身的系统结构,处理能力,都将适应技术发展的要求发生重大的变化。企业人事......
  • C++异常处理算法总结
    一、背景        C++的异常处理机制是用来处理程序运行过程中出现的异常情况的。异常处理可以帮助程序应对错误,避免程序崩溃,并且可以提供有意义的错误信息。下面是C++异常处理的关键概念和常用模式的总结。二、异常处理1.异常处理的基本机制        C++......
  • 【C++】模板进阶--保姆级解析(什么是非类型模板参数?什么是模板的特化?模板的特化如何应
    目录一、前言二、什么是C++模板? ......
  • LeetCode 算法:岛屿数量 c++
    原题链接......
  • C++部分复习笔记上
    C++语法复习1.C++入门基础缺省参数半缺省参数必须从右往左依次来给出,不能间隔着给缺省参数不能在函数声明和定义中同时出现缺省值必须是常量或者全局变量C语言不支持(编译器不支持)函数重载函数重载是函数的一种特殊情况,C++允许在同一作用域中声明几个功能类似的同名函......