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

树上启发式合并 待补

对于每个子树,直接遍历所有轻儿子,继承重儿子
会了板子后,修改维护的东西和莫队是一样的

洛谷 U41492

#include <bits/stdc++.h>
#define ll long long
#define ull unsigned long long
constexpr int N=1e5+5;
std::vector<int> e[N];
int c[N],sum[N],ans[N],dfn[N],dfncnt,sz[N],node[N],son[N],tol;void add(int x){if (sum[c[x]]==0){tol++;}sum[c[x]]++;
}
void del(int x){sum[c[x]]--;if (sum[c[x]]==0){tol--;}
}
void dfs1(int u,int fa){dfn[u]=++dfncnt;node[dfncnt]=u;sz[u]=1;int maxson=0;for (auto v:e[u]){if (v==fa) continue;dfs1(v,u);sz[u]+=sz[v];if (maxson<sz[v]){son[u]=v;maxson=sz[v];}}
}
void dfs2(int u,int fa,bool keep){for (auto v:e[u]){if (v==fa||v==son[u]) continue;dfs2(v,u,0);}if (son[u]){dfs2(son[u],u,1);}for (auto v:e[u]){if (v==fa||v==son[u]) continue;for (int i=dfn[v];i<=dfn[v]+sz[v]-1;i++){add(node[i]);}}add(u);ans[u]=tol;if (!keep){for (int i=dfn[u];i<=dfn[u]+sz[u]-1;i++){del(node[i]);}}
}
void yrzr(){int n;std::cin>>n;for (int i=1;i<n;i++){int x,y;std::cin>>x>>y;e[x].push_back(y);e[y].push_back(x);}for (int i=1;i<=n;i++){std::cin>>c[i];}dfs1(1,0);dfs2(1,0,1);int m;std::cin>>m;while (m--){int x;std::cin>>x;std::cout<<ans[x]<<"\n";}
}
int main(){std::ios::sync_with_stdio(false);std::cin.tie(nullptr);std::cout.tie(nullptr);int T=1;// std::cin>>T;while (T--){yrzr();}return 0;
}

CF600E
板子,改一下修改操作就行了

#include <bits/stdc++.h>
#define ll long long
#define ull unsigned long long
constexpr int N=1e5+5;
std::vector<int> e[N];
int c[N],dfn[N],dfncnt,son[N],sz[N],sum[N],node[N],maxn;
ll tol[N],ans[N];
void add(int x){x=c[x];tol[sum[x]]-=x;sum[x]++;tol[sum[x]]+=x;maxn=std::max(maxn,sum[x]);
}
void del(int x){x=c[x];tol[sum[x]]-=x;sum[x]--;tol[sum[x]]+=x;if (maxn==sum[x]+1&&tol[sum[x]+1]==0){maxn--;}
}
void dfs1(int u,int fa){dfn[u]=++dfncnt;node[dfncnt]=u;sz[u]=1;int maxson=0;for (auto v:e[u]){if (v==fa) continue;dfs1(v,u);sz[u]+=sz[v];if (maxson<sz[v]){son[u]=v;maxson=sz[v];}}
}
void dfs2(int u,int fa,bool keep){for (auto v:e[u]){if (v==fa||v==son[u]) continue;dfs2(v,u,0);}if (son[u]){dfs2(son[u],u,1);}for (auto v:e[u]){if (v==fa||v==son[u]) continue;for (int i=dfn[v];i<=dfn[v]+sz[v]-1;i++){add(node[i]);}}add(u);ans[u]=tol[maxn];if (!keep){for (int i=dfn[u];i<=dfn[u]+sz[u]-1;i++){del(node[i]);}}
}
void yrzr(){int n;std::cin>>n;for (int i=1;i<=n;i++){std::cin>>c[i];}for (int i=1;i<n;i++){int x,y;std::cin>>x>>y;e[x].push_back(y);e[y].push_back(x);}dfs1(1,0);dfs2(1,0,1);for (int i=1;i<=n;i++){std::cout<<ans[i]<<" ";}
}
int main(){std::ios::sync_with_stdio(false);std::cin.tie(nullptr);std::cout.tie(nullptr);int T=1;// std::cin>>T;while (T--){yrzr();}return 0;
}

相关文章:

树上启发式合并 待补

对于每个子树&#xff0c;直接遍历所有轻儿子&#xff0c;继承重儿子 会了板子后&#xff0c;修改维护的东西和莫队是一样的 洛谷 U41492 #include <bits/stdc.h> #define ll long long #define ull unsigned long long constexpr int N1e55; std::vector<int> e…...

minio分布式文件存储

基本介绍 什么是 MinIO MinIO 是一款基于 Go 语言的高性能、可扩展、云原生支持、操作简单、开源的分布式对象存储产品。基于 Apache License v2.0 开源协议&#xff0c;虽然轻量&#xff0c;却拥有着不错的性能。它兼容亚马逊S3云存储服务接口。可以很简单的和其他应…...

Linux新的IO模型io_uring

一、Linux下的网络通信模型 在网络开发的过程中&#xff0c;需要处理好几个问题。首先是通信的内核支持问题&#xff1b;其次是通信的模型问题&#xff1b;最后是框架问题。这些问题在闭源的OS如Windows上&#xff0c;基本上不算什么大问题&#xff08;因为只能用人家的API&am…...

FFmpeg 命令:从入门到精通 | FFmpeg 基本介绍

FFmpeg 命令&#xff1a;从入门到精通 | FFmpeg 基本介绍 FFmpeg 命令&#xff1a;从入门到精通 | FFmpeg 基本介绍FFmpeg 简介FFmpeg 基础知识复用与解复用编解码器码率和帧率 资料 FFmpeg 命令&#xff1a;从入门到精通 | FFmpeg 基本介绍 本系列文章要解决的问题&#xff1…...

数组篇 第一题:删除排序数组中的重复项

更多精彩内容请关注微信公众号&#xff1a;听潮庭。 第一题&#xff1a;删除排序数组中的重复项 给你一个 非严格递增排列 的数组 nums &#xff0c;请你 原地 删除重复出现的元素&#xff0c;使每个元素 只出现一次 &#xff0c;返回删除后数组的新长度。元素的 相对顺序 应…...

堆的初步认识

在学习本节文章前要先了解&#xff1a;大顶堆与小顶堆&#xff1a; &#xff08;优先级队列_加瓦不加班的博客-CSDN博客&#xff09; 堆实现 计算机科学中&#xff0c;堆是一种基于树的数据结构&#xff0c;通常用完全二叉树实现。 什么叫完全二叉树&#xff1f; 答&#x…...

CycleGAN模型之Pytorch实战

一、CycleGAN基本介绍 1. CycleGAN论文:《Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks》 2. 原文代码:https://github.com/junyanz/pytorch-CycleGAN-and-pix2pix 3. 网传精简代码:https://github.com/aitorzip/PyTorch-CycleGAN …...

C++(STL容器适配器)

前言&#xff1a; 适配器也称配接器&#xff08;adapters&#xff09;在STL组件的灵活组合运用功能上&#xff0c;扮演着轴承、转换器的角色。 《Design Patterns》对adapter的定义如下&#xff1a;将一个class的接口转换为另一个class的接口&#xff0c;使原本因接口不兼容而…...

软考 系统架构设计师系列知识点之软件架构风格(7)

接前一篇文章&#xff1a;软考 系统架构设计师系列知识点之软件架构风格&#xff08;6&#xff09; 这个十一注定是一个不能放松、保持“紧”的十一。由于报名了全国计算机技术与软件专业技术资格&#xff08;水平&#xff09;考试&#xff0c;11月4号就要考试&#xff0c;因此…...

【Vue3】自定义指令

除了 Vue 内置的一系列指令 (比如 v-model 或 v-show) 之外&#xff0c;Vue 还允许你注册自定义的指令 (Custom Directives)。 1. 生命周期钩子函数 一个自定义指令由一个包含类似组件生命周期钩子的对象来定义。钩子函数会接收到指令所绑定元素作为其参数。 在 <script …...

UG\NX CAM二次开发 加工模块获取 UF _ask_application_module

文章作者:代工 来源网站:NX CAM二次开发专栏 简介: UG\NX CAM二次开发 加工模块获取 UF _ask_application_module 代码: void MyClass::do_it() { // TODO: add your code here // 获取NX当前所在的模块 int module_id = 0; // UF_ask_application_module(&…...

借助GPU算力编译Android

借助GPU算力编译Android 借助GPU编译Android代码的意义在于提高编译的效率和速度。传统的CPU编译方式在处理大量代码时可能会遇到性能瓶颈,而GPU编译利用了显卡的并行计算能力,可以同时处理多个任务,加快编译过程。通过利用GPU的并行计算能力,可以将编译过程中的多个任务分…...

docker-compose一键部署mysql

1.创建安装目录 mnt为硬盘挂载目录&#xff0c;根据实际情况修改 mkdir -p /mnt/mysql cd /mnt/mysql vim docker-compose.yml2.编写docker-compose.yml version: 3.1 services:db:image: mysql:5.7 #mysql版本volumes:- ./data/db:/var/lib/mysql #数据文件- ./etc/my.cnf:/…...

MATLAB 函数签名器

文章目录 MATLAB 函数签名器注释规范模板参数类型 kind数据格式 type选项的支持 使用可执行程序封装为m函数程序输出 编译待办事项推荐阅读附录 MATLAB 函数签名器 MATLAB 函数签名器 (FUNCSIGN) &#xff0c;在规范注释格式的基础上为函数文件或类文件自动生成函数签名&#…...

2019强网杯随便注bugktu sql注入

一.2019强网杯随便注入 过滤了一些函数&#xff0c;联合查询&#xff0c;报错&#xff0c;布尔&#xff0c;时间等都不能用了&#xff0c;尝试堆叠注入 1.通过判断是单引号闭合 ?inject1-- 2.尝试堆叠查询数据库 ?inject1;show databases;-- 3.查询数据表 ?inject1;show …...

Html+Css+Js计算时间差,返回相差的天/时/分/秒(从未来的一个日期时间到当前日期时间的差)。

Html部分 <!DOCTYPE html> <html><head><meta charset"utf-8" /><title></title><link rel"stylesheet" type"text/css" href"css/index.css" /><script src"js/index.js" t…...

mybatis项目启动报错:reader entry: ���� = v

问题再现 解决方案一 由于指定的VFS没有找&#xff0c;mybatis启用了默认的DefaultVFS&#xff0c;然后由于DefaultVFS的内部逻辑&#xff0c;从而导致了reader entry乱码。 去掉mybatis配置文件中关于别名的配置&#xff0c;然后在mapper.xml文件中使用完整的类名。 待删除的…...

【GIT版本控制】--什么是版本控制

一、为什么需要版本控制&#xff1f; 版本控制是在软件开发和许多其他领域中非常重要的工具&#xff0c;因为它解决了许多与协作、追踪更改和管理项目相关的问题。以下是一些主要原因&#xff0c;解释了为什么需要版本控制&#xff1a; 追踪更改历史: 版本控制系统允许您准确…...

ChatGPT付费创作系统V2.3.4独立版 +WEB端+ H5端 + 小程序最新前端

人类小徐提供的GPT付费体验系统最新版系统是一款基于ThinkPHP框架开发的AI问答小程序&#xff0c;是基于国外很火的ChatGPT进行开发的Ai智能问答小程序。当前全民热议ChatGPT&#xff0c;流量超级大&#xff0c;引流不要太简单&#xff01;一键下单即可拥有自己的GPT&#xff0…...

GEE16: 区域日均降水量计算

Precipitation 1. 区域日均降水量计算2. 降水时间序列3. 降水数据年度时间序列对比分析 1. 区域日均降水量计算 今天分析一个计算区域日均降水量的方法&#xff1a; 数据信息&#xff1a;   Climate Hazards Group InfraRed Precipitation with Station data (CHIRPS) is a…...

Spring Boot 3.2项目实战:5分钟搞定Tomcat虚拟线程配置,让你的接口吞吐量翻倍

Spring Boot 3.2虚拟线程实战&#xff1a;Tomcat配置优化与性能飞跃指南 当你的电商大促接口突然面临每秒上万请求&#xff0c;或者文件上传服务在高并发下响应缓慢时&#xff0c;传统线程池往往成为性能瓶颈。Spring Boot 3.2与Java 21的虚拟线程组合&#xff0c;正在重新定义…...

UG模型转STP后总出问题?可能是STEP 203和214版本没选对

UG模型转STP格式的深度选择指南&#xff1a;STEP 203与214版本差异解析 在工业设计领域&#xff0c;UG NX与STP格式的转换堪称日常操作&#xff0c;但许多工程师都曾遭遇这样的困境&#xff1a;明明转换过程一切顺利&#xff0c;接收方打开文件时却出现面片丢失、PMI信息异常甚…...

5大维度重构Windows体验:开源系统优化方案全解析

5大维度重构Windows体验&#xff1a;开源系统优化方案全解析 【免费下载链接】Atlas &#x1f680; An open and lightweight modification to Windows, designed to optimize performance, privacy and security. 项目地址: https://gitcode.com/GitHub_Trending/atlas1/Atl…...

图像超分新思路:拆解SCNet的‘空间移位’操作,看它如何用零参数实现3x3卷积的效果

图像超分辨率革命&#xff1a;零参数空间移位如何颠覆传统卷积设计 当你在手机相册里翻出一张十年前的老照片&#xff0c;是否曾幻想过能一键修复那些模糊的像素&#xff1f;这正是图像超分辨率技术试图解决的难题。传统方法依赖计算密集的33卷积&#xff0c;而SCNet提出的&quo…...

MoveIt 2 Launch文件进阶:如何用MoveItConfigsBuilder灵活切换规划器(OMPL vs. Pilz)

MoveIt 2规划器切换实战&#xff1a;用MoveItConfigsBuilder实现OMPL与Pilz工业规划器的动态选择 在工业机器人应用开发中&#xff0c;运动规划器的选择往往决定了任务执行的效率和质量。想象一下这样的场景&#xff1a;你的机械臂需要在杂乱环境中快速避障移动时&#xff0c;…...

深度残差收缩网络(pytorch)框架+时序信号转格拉姆角场二维图; 将时序信号转换为二维图

深度残差收缩网络&#xff08;pytorch&#xff09;框架时序信号转格拉姆角场二维图&#xff1b; 将时序信号转换为二维图&#xff0c;使用深度残差收缩网络进行特征提取&#xff1b;训练后保存训练文件便于二次使用。 代码清晰&#xff0c;模型、训练、数据读取分类明显&#x…...

实战LangGraph构建智能客服系统:在快马平台实现工单自动分类与处理全流程

今天想和大家分享一个用LangGraph构建智能客服系统的实战经验。这个项目主要解决工单自动分类和处理的问题&#xff0c;整个过程在InsCode(快马)平台上完成&#xff0c;从开发到部署一气呵成。 项目背景与需求分析 传统客服系统需要人工处理大量工单&#xff0c;效率低下且容易…...

4个关键步骤解决Calibre中文路径乱码难题

4个关键步骤解决Calibre中文路径乱码难题 【免费下载链接】calibre-do-not-translate-my-path Switch my calibre library from ascii path to plain Unicode path. 将我的书库从拼音目录切换至非纯英文&#xff08;中文&#xff09;命名 项目地址: https://gitcode.com/gh_m…...

HTML2Canvas终极指南:快速将网页内容转为精美图片的完整方案

HTML2Canvas终极指南&#xff1a;快速将网页内容转为精美图片的完整方案 【免费下载链接】html2canvas Screenshots with JavaScript 项目地址: https://gitcode.com/gh_mirrors/ht/html2canvas HTML2Canvas是一款强大的JavaScript库&#xff0c;能够直接在浏览器中把网…...

一文读懂:智能体身份权限治理演进实录

序章当一个实验性的“咖啡外卖”智能体&#xff08;BrewSense&#xff09;&#xff0c;从服务几位工程师的小工具&#xff0c;演变为数千人依赖的自动化伙伴时&#xff0c;会发生什么&#xff1f;这不仅仅是用户量和调用量的激增&#xff0c;更是一场关于身份、权限与信任的治理…...