当前位置: 首页 > news >正文

第十四届蓝桥杯大赛软件赛省赛 C/C++ 大学 A 组 E 题

颜色平衡树

  • ==问题描述==
  • ==格式输入==
  • ==格式输出==
  • ==样例输入==
  • ==样例输出==
  • ==评测用例规模与约定==
  • ==解析==
  • ==参考程序==

问题描述

在这里插入图片描述
在这里插入图片描述


格式输入

输入的第一行包含一个整数 n ,表示树的结点数。
接下来 n 行,每行包含两个整数 Ci
, Fi,用一个空格分隔,表示第 i 个结点
的颜色和父亲结点编号。
特别地,输入数据保证 F1 为 0 ,也即 1 号点没有父亲结点。保证输入数
据是一棵树。


格式输出

输出一行包含一个整数表示答案。


样例输入

6
2 0
2 1
1 2
3 3
3 4
1 4


样例输出

4 编号为 1, 3, 5, 6 的 4 个结点对应的子树为颜色平衡树。


评测用例规模与约定

对于 30% 的评测用例,n ≤ 200,Ci ≤ 200 ;
对于 60% 的评测用例,n ≤ 5000,Ci ≤ 5000 ;
对于所有评测用例,1 ≤ n ≤ 200000,1 ≤ Ci ≤ 200000,0 ≤ Fi < i 。


解析

十四届蓝桥


参考程序

#include<bits/stdc++.h>
using namespace std;
const int N = 200000 + 7;
int col[N], f, n, ans;
struct node {int to, next;
}edge[N];
int head[N], cnt, num[N];
inline void add(int x, int to) {edge[++cnt].to = to;edge[cnt].next = head[x];head[x] = cnt;
}
int dfn, in[N], out[N], belong[N], newcol[N];
unordered_map<int, int> mp;
inline void dfs(int x) {in[x] = ++dfn;for (int i = head[x]; i; i = edge[i].next) {int y = edge[i].to;dfs(y);}out[x] = dfn;
}
struct mo {int l, r;
}q[N << 1];
inline bool cmp(const mo& a, const mo& b) {return belong[a.l] == belong[b.l] ? a.r < b.r : a.l < b.l;
}
inline void del(int x) {int c = newcol[x];mp[num[c]]--;if (mp[num[c]] == 0) {mp.erase(num[c]);}num[c]--;if (num[c]) mp[num[c]]++;
}
inline void add(int x) {int c = newcol[x];if (num[c]) mp[num[c]]--;if (mp[num[c]] == 0) {mp.erase(num[c]);}num[c]++;mp[num[c]]++;
}
inline void Case_Test() {cin >> n;for (int i = 1; i <= n; i++) {cin >> col[i] >> f;if (f) add(f, i);}dfs(1);for (int i = 1; i <= n; i++) {// cout << i << " : [" << in[i] << "," << out[i] << "]" << endl;q[i].l = in[i], q[i].r = out[i];newcol[in[i]] = col[i]; newcol[out[i]] = col[i];// dfn改变原来位置,需要用newcol}int sq = sqrt(dfn);// 根号for (int i = 1; i <= dfn; i++) {belong[i] = (i - 1) / sq + 1;// 预处理}sort(q + 1, q + 1 + n, cmp);// 查询区间排序int l = 1, r = 0;// 莫队初始化for (int i = 1; i <= n; i++) {while (l < q[i].l) del(l++);while (l > q[i].l) add(--l);while (r < q[i].r) add(++r);while (r > q[i].r) del(r--);// 莫队四种转移if (mp.size() == 1) ans++;}cout << ans;
}
int main()
{Case_Test();return 0;
}

以个人刷题整理为目的,如若侵权,请联系删除~

相关文章:

第十四届蓝桥杯大赛软件赛省赛 C/C++ 大学 A 组 E 题

颜色平衡树问题描述格式输入格式输出样例输入样例输出评测用例规模与约定解析参考程序问题描述 格式输入 输入的第一行包含一个整数 n &#xff0c;表示树的结点数。 接下来 n 行&#xff0c;每行包含两个整数 Ci , Fi&#xff0c;用一个空格分隔&#xff0c;表示第 i 个结点 …...

Python 小型项目大全 21~25

二十一、DNA 可视化 原文&#xff1a;http://inventwithpython.com/bigbookpython/project21.html 脱氧核糖核酸是一种微小的分子&#xff0c;存在于我们身体的每个细胞中&#xff0c;包含着我们身体如何生长的蓝图。它看起来像一对核苷酸分子的双螺旋结构&#xff1a;鸟嘌呤、…...

MinIO从信息泄漏到RCE

文章目录信息泄露漏洞利用漏洞分析漏洞修复RCE漏洞分析参考文章信息泄露 漏洞利用 如果MinIO以集群方式部署&#xff0c;存在信息泄露漏洞&#xff0c;攻击者可以通过HTTP请求获取目标进程的所有环境变量&#xff0c;包括MINIO_SECRET_KEY和MINIO_ROOT_PASSWORD. vulhub有环…...

202.Spark(九):SparkStreaming案例实操

目录 一、启动zookeeper,kafka基础环境 二、项目导好jar包,并且创建源数据,并在kafka中测试能否消费到数据...

GlusterFS(GFS)分布式文件系统

目录 一.文件系统简介 1.文件系统的组成 2.文件系统的作用 3.文件系统的挂载使用 二.GlusterFS概述 1.GlusterFS是什么&#xff1f; 2.GlusterFS的特点 3.GlusterFS术语介绍 3.1 Brick&#xff08;存储块&#xff09; 3.2 Volume&#xff08;逻辑卷&#xff09; 3.3…...

ChatGPT文本框再次升级,打造出新型操作系统

在ChatGPT到来之前&#xff0c;没有谁能够预见。但是&#xff0c;它最终还是来了&#xff0c;并引起了不小的轰动&#xff0c;甚至有可能颠覆整个行业。 从某种程度上说&#xff0c;ChatGPT可能是历史上增长最快的应用程序&#xff0c;仅在两个多月就拥有了1亿多活跃用户&…...

DPU02国产USB转UART控制芯片替代CP2102

目录DPU02简介DPU02芯片特性应用DPU02简介 DPU02是高度集成的USB转UART的桥接控制芯片&#xff0c;该芯片为RS-232设计更新为USB设计&#xff0c;并简化PCB组件空间提供了一个简单的解决方案。       DPU02包括了一个USB 2.0全速功能控制器、USB收发器、振荡器、EEPROM和带…...

Softing新版HART多路复用器软件支持西门子控制器

用于访问配置和诊断数据的HART多路复用器软件——Softing smartLink SW-HT&#xff0c;现在支持西门子的ET200远程IO和FDT/DTM接口。 smartLink SW-HT是一个基于Docker容器的软件应用。通过该软件&#xff0c;用户可以快速地访问以太网远程IO的HART设备&#xff0c;并且无需额外…...

〖Python网络爬虫实战⑫〗- XPATH语法介绍

订阅&#xff1a;新手可以订阅我的其他专栏。免费阶段订阅量1000python项目实战 Python编程基础教程系列&#xff08;零基础小白搬砖逆袭) 说明&#xff1a;本专栏持续更新中&#xff0c;目前专栏免费订阅&#xff0c;在转为付费专栏前订阅本专栏的&#xff0c;可以免费订阅付费…...

实例方法、类方法、静态方法、实例属性、类属性

背景&#xff1a;今天在复习类相关知识的时候&#xff0c;突然想到这几种类型的方法的区别和用法&#xff0c;感觉有点模棱两可&#xff0c;于是总结一下&#xff0c;加深记忆。 定义&#xff1a;想要区别和理解几种方法&#xff0c;首先要定义一个类&#xff0c;要在类中加深…...

数据结构---二叉树

专栏&#xff1a;数据结构 个人主页&#xff1a;HaiFan. 专栏简介&#xff1a;这里是HaiFan.的数据结构专栏&#xff0c;今天的内容是二叉树。 二叉树树的概念及结构二叉树概念及结构二叉树的概念二叉树的存储结构二叉树的顺序结构及实现大根堆和小根堆堆的实现及其各个接口堆的…...

CMake——从入门到百公里加速6.7s

目录 一、前言 二、HelloWorld 三、CMAKE 界面 3.1 gui正则表达式 3.2 GUI构建 四 关键字 4.1 add_library 4.2 add_subdirectory 4.3 add_executable 4.4 aux_source_directory 4.5 SET设置变量 4.6 INSTALL安装 4.7 ADD_LIBRARY 4.8 SET_TARGET_PROPERTIES 4.9…...

无公网IP,在外公网远程访问RabbitMQ服务「内网穿透」

文章目录前言1.安装erlang 语言2.安装rabbitMQ3. 内网穿透3.1 安装cpolar内网穿透(支持一键自动安装脚本)3.2 创建HTTP隧道4. 公网远程连接5.固定公网TCP地址5.1 保留一个固定的公网TCP端口地址5.2 配置固定公网TCP端口地址前言 RabbitMQ是一个在 AMQP(高级消息队列协议)基础上…...

Node【二】NPM

文章目录&#x1f31f;前言&#x1f31f;NPM使用&#x1f31f;NPM使用场景&#x1f31f;NPM的常用命令&#x1f31f;NPM命令使用介绍&#x1f31f; 使用NPM安装模块&#x1f31f; 下载三方包&#x1f31f; 全局安装VS本地安装&#x1f31f; 本地安装&#x1f31f; 全局安装&…...

【2023最新】超详细图文保姆级教程:App开发新手入门(2)

上章节我们已经成功的创建了一个 App 项目&#xff0c;接下来我们讲述一下&#xff0c;如何导入项目、编辑代码和提交项目代码。 Let’s Go! 4. 项目导入 当用户创建一个新的应用时&#xff0c;YonStudio 开发工具会自动导入模板项目的默认代码&#xff0c;不需要手动进行代…...

sftp使用

Client端使用Server端的账户username&#xff0c;sftp登录Server&#xff0c;除了IP地址&#xff0c;也可以使用/etc/hosts定义的域名&#xff0c;注意&#xff0c;Client的默认路径&#xff1a;Shell中的当前路径&#xff0c;Server的默认路径&#xff1a;server账户家目录 ​…...

FastGithub---------不再为访问github苦恼

声明&#xff1a;只解决github加速神器&#xff0c;解决github打不开、用户头像无法加载、releases无法上传下载、git-clone、git-pull、git-push失败等问题。 github为什么打不开&#xff1f; 其实不用加速的情况下&#xff0c;使用5G是可以打开的&#xff0c;只是资源加载…...

Spring Boot AOP @Pointcut拦截注解的表达式与运算符

项目场景&#xff1a; 这里主要说下Spring Boot AOP中Pointcut拦截类上面的注解与方法上面的注解&#xff0c;怎么写表达式怎么&#xff0c;还有Pointcut中使用运算符。 PointCut 表达式 拦截注解的表达式有3种&#xff1a;annotation、within、target 1、annotation 匹配有…...

2023年第十四届蓝桥杯javaB组省赛真题

&#x1f468;‍&#x1f4bb;作者简介&#xff1a;练习时长两年半的java博主 &#x1f4d6;个人主页&#xff1a;君临๑ &#x1f39e;️文章介绍&#xff1a;2023年第十四届蓝桥杯javaB组省赛真题 &#x1f389;所属专栏&#xff1a;算法专栏 &#x1f381; ps&#xff1a;点…...

CefSharp.WinForms 112.2.70最新版体验

一、准备 下载最新包及依赖包(对应.NET4.5.2,后续版本可能4.6.2+)到packages中,本地升级更快 NuGet Gallery | CefSharp.WinForms 112.2.70 NuGet Gallery | CefSharp.Common 112.2.70 NuGet Gallery | cef.redist.x64 112.2.7 NuGet Gallery | cef.redist.x86 112.2.…...

QtUnblockNeteaseMusic终极指南:高效解锁网易云音乐地区限制

QtUnblockNeteaseMusic终极指南&#xff1a;高效解锁网易云音乐地区限制 【免费下载链接】QtUnblockNeteaseMusic A desktop client for UnblockNeteaseMusic, made with Qt. 项目地址: https://gitcode.com/gh_mirrors/qt/QtUnblockNeteaseMusic QtUnblockNeteaseMusic…...

ElevenLabs法语情感语音合成黑盒拆解:如何通过prosody token注入实现“巴黎左岸咖啡馆式”自然停顿与语调起伏?

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;ElevenLabs法语情感语音合成黑盒拆解&#xff1a;核心动机与技术定位 ElevenLabs 的法语语音合成能力并非简单地将英文模型适配至法语&#xff0c;而是依托多语言联合训练、音素级韵律建模与情感嵌入向…...

构建企业级数据集成平台:解锁非标准数据源的.NET适配器框架实践

1. 项目概述与核心价值最近在和一些做企业级应用集成的朋友聊天&#xff0c;大家普遍提到一个痛点&#xff1a;从大型商业软件&#xff08;比如SAP、Oracle EBS&#xff09;或者一些老旧的、文档不全的遗留系统中抽取数据时&#xff0c;经常会遇到各种“非标准”的数据格式。这…...

GHelper终极指南:3步掌握华硕笔记本性能控制秘籍

GHelper终极指南&#xff1a;3步掌握华硕笔记本性能控制秘籍 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, Vivobook, Zenbook, Expertb…...

保姆级教程:从NCBI下载序列到MEGA7构建进化树(附拟南芥SPL15基因实战)

生物信息学实战&#xff1a;从基因检索到进化树构建的全流程解析 在分子生物学研究中&#xff0c;系统进化分析是理解基因家族演化关系的重要工具。对于刚接触生物信息学的学生来说&#xff0c;从零开始完成一个完整的进化树分析项目往往面临诸多挑战——如何获取目标基因序列…...

达达主义AI艺术正在消失?深度起底平台内容审核算法对“无意义美学”的误判逻辑(含绕过策略与伦理边界声明)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;达达主义AI艺术正在消失&#xff1f; 达达主义以反逻辑、反美学、拥抱偶然性为内核&#xff0c;而当代AI艺术生成工具却日益依赖确定性提示词工程、风格迁移约束与商业审美对齐——这种张力正悄然消解达…...

PCA降维后画图总感觉差点意思?试试用sklearn和matplotlib绘制带置信区间的分类图(附完整代码)

用置信椭圆增强PCA可视化&#xff1a;从数学原理到Python实战 当你第一次完成PCA降维并绘制出散点图时&#xff0c;那种将高维数据压缩到二维平面的成就感令人振奋。但很快你会发现一个尴尬的现实——那些密密麻麻的散点虽然展示了数据分布&#xff0c;却难以直观判断不同类别之…...

PTA数据结构实战:层次遍历巧解二叉树叶结点输出

1. 从问题理解到解题思路 第一次看到PTA上这道二叉树题目时&#xff0c;我也被题目描述唬住了。题目要求按从上到下、从左到右的顺序输出所有叶结点&#xff0c;这不就是典型的层次遍历&#xff08;BFS&#xff09;应用场景吗&#xff1f;但仔细分析输入格式后&#xff0c;我发…...

深入RISC-V链接脚本:从.lds文件看C程序的内存‘出生’与‘搬家’全过程

深入RISC-V链接脚本&#xff1a;从.lds文件看C程序的内存‘出生’与‘搬家’全过程 在嵌入式开发的世界里&#xff0c;一个C程序从源代码到最终在硬件上运行&#xff0c;经历了编译、链接和加载三个关键阶段。这个过程就像一个人的生命历程&#xff1a;编译是"出生"&…...

树莓派智能画布:从Raspbian部署到NeoPixel灯光系统集成

1. 项目概述&#xff1a;打造一个会发光的智能画布如果你和我一样&#xff0c;对嵌入式硬件和创意编程的结合着迷&#xff0c;那么将一块普通的画布变成一个由代码控制的动态灯光装置&#xff0c;绝对是一件充满乐趣和成就感的事情。这个项目&#xff0c;我称之为“CompuCanvas…...