树上启发式合并(详解)

核心思想

借用了一个节点到根的路径上轻边个数不会超过logn条。

故重节点保留,轻节点删去,多重统计。

实际复杂度(nlogn)

例题

Lomsat gelral - 洛谷

AC 代码

#include<bits/stdc++.h>
#define int long long
using namespace std;
int n;
int col[100010],ans[100010];
vector<int> g[100010];
int son[100010];
int sz[100010];
int sum,mx;
int Son;
int cnt[100010];
void dfs1(int u,int fa){sz[u] = 1;for(int v:g[u]){if(v == fa)continue;dfs1(v,u);sz[u]+=sz[v];if(sz[son[u]]<sz[v]){son[u] = v;}}
}
void add(int u,int fa,int val){cnt[col[u]]+=val;int tp = col[u];if(cnt[tp] > mx){mx = cnt[tp];sum = tp;}else if(cnt[tp] == mx){sum+=tp;}for(int v:g[u]){if(v == fa||v == Son)continue;add(v,u,val);}
}
void dfs2(int u,int fa,int opt){for(int v:g[u]){if(v == fa||v == son[u])continue;dfs2(v,u,0);}if(son[u]){dfs2(son[u],u,1),Son = son[u];}add(u,fa,1);Son = 0;ans[u] = sum;if(!opt){add(u,fa,-1),sum = mx = 0;}
}
signed main(){cin>>n;for(int i = 1;i <= n;i++)cin>>col[i];for(int i = 1;i < n;i++){int u,v;cin>>u>>v;g[u].push_back(v);g[v].push_back(u);}dfs1(1,0);dfs2(1,1,0);for(int i = 1;i <= n;i++){cout<<ans[i]<<" ";}return 0;
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/453995.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

新型电力系统精细化时序模拟分析软件

一、背景意义 在“碳达峰碳中和”及“新型电力系统”战略引领下&#xff0c;新型电力系统电力电量平衡分析成为电力系统规划运行模拟仿真的必要环节。近年来&#xff0c;随着电网新能源渗透率逐渐提升&#xff0c;储能等灵活性调节资源大幅增加&#xff0c;传统的基于典型曲线…

qiankun 应用之间数据传递

qiankun 应用之间数据传递 全局共享 initGlobalState qiankun initGlobalState API 单击前往 qiankun 内部提供了 initGlobalState 方法用于注册 MicroAppStateActions 实例用于通信&#xff0c;该实例有三个方法&#xff0c;分别是onGlobalStateChange、setGlobalState、of…

小巧设计,强大功能:探索SoC模块的多样化功能

LoRa-STM32WLE5模块基于ST的STM32WLE5芯片&#xff0c;采用LoRa调制&#xff0c;适用于超远程和超低功耗无线电解决方案。搭载高性能Arm Cortex-M4核心&#xff0c;频率高达48 MHz&#xff0c;支持256 KB闪存和64 KB运行内存&#xff0c;具备安全性增强功能。广泛应用于安防、智…

C++进阶之路:日期类的实现、const成员(类与对象_中篇)

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢&#xff0c;在这里我会分享我的知识和经验。&am…

ue5 扇形射线检测和鼠标拖拽物体

这里的NumTrace是要发射几根射线&#xff0c;Degrees Per Trace是每根射线之间的角度&#xff0c; 例如 要在角色面前实现一个180度的扇形射线检测&#xff0c;就需这两个变量乘起来等于180 TraceLength是射线的长度 下面是鼠标拖动物体逻辑&#xff0c;很简单 这里的Floor和…

文心快码 - Baidu Comate 让AI帮你提高生产力|AI代码助理

码随心动&#xff0c;快人一步&#xff0c;更懂你的智能代码助手 基于文心大模型&#xff0c;结合百度编程大数据&#xff0c;为你生成优质编程代码。文心快码 - Baidu Comate&#xff0c;更懂你的AI编程伙伴&#xff0c;研发效率提升好帮手。 一、更懂研发知识 开发速度快 构…

提示词高级阶段学习day3.1

第三个类型就是让模型做信息的转化 最直观的例子就是翻译 去翻译英文&#xff0c;它的效果都非常好 除此之外&#xff0c;给大家举一个让大模型翻译代码的例子&#xff0c; 还有就是让大模型写代码的 这是一个数据分析场景&#xff0c;其实数据分析场景一直追求的就是一个…

LeetCode 精选 75 回顾

目录 一、数组 / 字符串 1.交替合并字符串 &#xff08;简单&#xff09; 2.字符串的最大公因子 &#xff08;简单&#xff09; 3.拥有最多糖果的孩子&#xff08;简单&#xff09; 4.种花问题&#xff08;简单&#xff09; 5.反转字符串中的元音字母&#xff08;简单&a…

企业级调度器 LVS

集群和分布式基础知识 系统性能的扩展方式 当一个系统&#xff0c;或一个服务的请求量达到一定的数量级的时候&#xff0c;运行该服务的服务器的性能和资源上限&#xff0c; 很容易成为其性能瓶颈。除了性能问题之外&#xff0c;如果只部署在单台服务器上&#xff0c;在此服务…

iOS Swift逆向——deMangle过程中的偏移计算

碰到好多函数最开始都会调用这个函数&#xff0c;xref了一下&#xff0c;发现有上万个xref。 __int64 __fastcall sub_1000B6ED0(__int64 *a1) {__int64 result; // x0result *a1;if ( result < 0 ){result swift_getTypeByMangledNameInContext((char *)a1 (int)result…

Hyper-V安装使用教程

操作系统&#xff1a;Windows Server 2019 Datacenter 1.安装Hyper-V (1)控制面板 > 程序 > 启用或关闭 Windows 功能 (2)勾选Hyper-V > 安装重启 2.Hyper-V管理器 (1)连接到服务器 > 本地计算机 (2)虚拟交换机管理器 > 新建虚拟网络交换机 > 外部 > 创…

Spark的安装配置及集群搭建

Spark的本地安装配置&#xff1a; 我们用scala语言编写和操作spark&#xff0c;所以先要完成scala的环境配置 1、先完成Scala的环境搭建 下载Scala插件&#xff0c;创建一个Maven项目&#xff0c;导入Scala依赖和插件 scala依赖 <dependency><groupId>org.scal…

国家唯一认证的防脱发产品,双11速速囤

脱发的一定都深刻知道掉发严重反复折磨的痛苦&#xff01;为了能早点调理好掉发严重的问题&#xff0c;真的买了一堆育发液&#xff0c;也是踩了不少雷&#xff0c;今天就把用过好用的分享出来&#xff0c;有需要的趁着双十一赶紧囤点~ 一、露卡菲娅防脱精华液&#xff1a;科技…

【硬盘知识】记一次买 希捷 二手 清零盘 的经历(怎么检测硬盘的好坏、健康程度)

&#x1f601;博客主页&#x1f601;&#xff1a;&#x1f680;https://blog.csdn.net/wkd_007&#x1f680; &#x1f911;博客内容&#x1f911;&#xff1a;&#x1f36d;嵌入式开发、Linux、C语言、C、数据结构、音视频&#x1f36d; &#x1f923;本文内容&#x1f923;&a…

信息搜集 ---开发框架识别

开发框架识别 插件推荐 插件商店搜索wappalyzer Python - Django&Flask Django 1、wappalyzer插件 2、返回数据包的特征字段 Set-Cookie:expires Flask 1、wappalyzer插件 2、返回数据包的特征字段 Set-Cookie:expires 或 Etag: "flask PHP - ThinkPHP&Lar…

光纤光学——弱导光纤与线偏振模

一、基本思想 弱导光纤&#xff1a;n1≈ n2 , k0n1 ≈ k0n2&#xff0c;亦即&#xff1a; k0n1 ≈ k0 n2 ≈ 光线与纤轴的夹角小&#xff1b;芯区对光场的限制较弱&#xff1b; 消逝场在包层中延伸较远。 弱导光纤场的特点&#xff1a; HEι1,m模式与EHι-1,m色散曲线相近…

Vivado - Aurora 8B/10B IP

目录 1. 简介 2. 设计调试 2.1 Physical Layer 2.2 Link Layer 2.3 Receiver 2.4 IP 接口 2.5 调试过程 2.5.1 Block Design 2.5.2 释放 gt_reset 2.5.3 观察数据 3. 实用技巧 3.1 GT 坐标与布局 3.1.1 选择器件并进行RTL分析 3.1.2 进入平面设计 3.1.3 收发器布…

R语言机器学习算法实战系列(六)K-邻近算法 (K-Nearest Neighbors)

禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍教程下载数据加载R包导入数据数据预处理数据描述数据切割调节参数构建模型预测测试数据评估模型模型准确性混淆矩阵模型评估指标ROC CurvePRC Curve保存模型总结优点:缺点:系统信…

Gin框架操作指南01:开山篇

Gin是目前最流行&#xff0c;性能最好的的GoWeb框架&#xff0c;几乎成为了学习GoWeb必备的知识。本人最近也在学Gin&#xff0c;在b站搜了很多教程&#xff0c;发现有的教程不够详细&#xff0c;有的教程工具包安装有问题&#xff0c;而官方文档的很多示例代码又不全&#xff…

deepin V23 部署Ollama

系统&#xff1a;Deepin V23 1.Ollama简单介绍 Ollama是一个开源的大语言模型本地部署工具&#xff0c;通过它可以方便的在本机部署开源大模型。 Ollama仓库地址&#xff1a;https://github.com/ollama/ollama Ollama官方下载地址&#xff1a;https://…