树上启发式合并【含2020CCPC长春F题等稍微变种】

【扩展卡尔曼滤波器EKF】基于UWB雷达的SLAM能够在室内环境内映射自然点地标,并改善机器人定位(Matlab代码实现) 内容概要:本文档提供了名为“Plecs全桥LLC谐振变换器仿真模型”的资源,主要用于电力电子领域中LLC谐振变换器的建模与仿真研究。该模型基于Plecs软件平台构建,聚焦于全桥LLC拓扑结构,涵盖其工作原理、关键参数设计及动态性能仿真,帮助用户深入理解LLC谐振变换器在软开关、高效率功率转换方面的特性与实现方法。文档内容包括系统建模、主电路参数计算、控制策略实现以及仿真结果分析等部分,适用于高频高效电源变换器的研发与教学实践。; 适合人群:具备电力电子与电力系统基础知识,从事电源变换器设计、仿真与优化工作的工程师及高校研究生。; 使用场景及目标:① 掌握LLC谐振变换器的工作机理与Plecs仿真建模流程;② 学习全桥LLC拓扑的参数设计与软开关实现方法;③ 为高频高效DC-DC变换器的科研、课程设计或工程项目提供仿真基础和技术参考。; 阅读建议:建议结合电力电子技术教材与Plecs官方文档同步学习,重点理解谐振腔参数(如Lr、Cr、Lm)对增益特性与软开关的影响,并通过调整仿真参数验证不同工况下的系统响应,以加深对LLC变换器设计规律的理解。 立即下载

学习了树上启发式合并一段时间了,我来写一个总结吧;
树上启发式合并叫做Dsu On Tree
被某个毒瘤大佬称为静态链分治;

树上启发式合并我也不知道为什么叫启发式。
但是在我的理解中树上启发式合并和莫队分块都是一样的暴力的机制。是一种合理分配查询的顺序来节省资源的做法;

莫队分块可以在多次询问中合理安排询问的顺序,导致时间变成n*sqrt(n);
而树上启发式合并则更加强悍,时间复杂度为nlogn;

首先来一手板题:
给你一个树,询问每一个结点子树中含有不同颜色的数有多少种;颜色也是与n一个数量级,设都是1e5吧;
首先想到的是暴力,但是如此会爆空间,每一个点都开一个1e5的桶一定是会炸的;
如果使用一个桶,那么每次求完我们都要清空桶,然后在新的子树中的信息放到这个已经清空的桶中去;

如此便是一个N*N的算法,非常的暴力;

但是我们可以加一个显而易见的剪枝:容易得知:当K子树儿子都给求出来之后,此时他的一个儿子的信息还留在桶里哪,我们不用清空这个桶,直接保留这些信息,然后把K子树其他点放进去来更新答案;

然后就出现了一个非常简单的剪枝:那就是对于K子树的答案,先求出K的轻儿子的答案,然后遍历轻儿子来取出轻儿子在桶中的影响,然后求重儿子的答案,此时不去清空影响,而是保留桶中重儿子的信息来作为K子树的信息的基底。

于是,时间复杂度就神奇的变成了O(NlogN)!!!!!!!!

是不是很神奇;仅仅是不清空重儿子保留其在桶中的信息而已,为什么就能产生如此巨大的剪枝影响。

由于重儿子的信息是不会被清除的,那么非常显然的一点就是当自底向上的过程中,每一个轻儿子都只会进最多Logn次桶,出Logn次桶;如此便能够保证时间复杂度;

E. Lomsat gelral
对于这个题显然就是和上面的原始问题是一样的题目;题意为:每个节点出现的最多点的编号和。

同时DsuOnTree有很多写法,我这里推荐的是更格式化且易懂的做法;

#include<bits/stdc++.h>
const double eps = 1e-6;
const double PI = acos(-1);
const int INF = 0x3f3f3f3f;
#define ms(a,k) memset(a,k,sizeof(a))
#define X first
#define Y second
#define pii pair<int ,int >
#define lowbit(a) a&(-a)
typedef long long ll ;
typedef unsigned long long ull;
using namespace std;
const int mod = 1e9+7;
const int maxn = 1e5+10;
inline void read(int &x){scanf("%d",&x);}
int c[maxn],sz[maxn],tong[maxn];
ll sum,_max,ans[maxn];
vector<int >g[maxn];
int dfs(int k,int last)
{//求子树size,用来求出来他们的重儿子和轻儿子
	sz[k] = 1;
	for(int i =0;i<g[k].size();++i)
	{
		if(g[k][i]!=last)sz[k]+=dfs(g[k][i],k);
	}
	return sz[k];
}
bool cmp(int x,int y){return sz[x]>sz[y];}
void _merge(int k)
{//把k子树的信息合并到桶中并更新答案
	tong[c[k]]++;
	if(tong[c[k] ]>_max){sum = c[k];_max = tong[c[k] ];}
	else if(tong[c[k] ]==_max){sum +=c[k];}
	for(int i =1;i<g[k].size();++i)
	{
		_merge(g[k][i]);
	}
}
void change(int k)
{//入桶函数与出桶函数共用一个函数体,增加一个参数cut=-1或者1就能控制tong[c[k] ]的变化;
	tong[c[k] ]--;
	for(int i =1;i<g[k].size();++i)change(g[k][i]);
}
void dsu(int k)
{//DsuOnTree的主体函数;
	//printf("%d\n",k);
	int len = g[k].size();
	for(int i =len-1;i>=1-(k==1);--i)
	{//首先处理的是儿子们的答案,当g[k][i]为重儿子的时候就不清空桶,因为我在main里面排序了,所以重儿子就是1-(k==1),这里要减去一个(k==1)自然是因为1是没有father结点的;
		sum =0;_max = 0;
		dsu(g[k][i]);
		if(i != (1-(k==1)) )change(g[k][i]);//重儿子的信息保留,其他都删除;
	}
	for(int i =len-1;i>1-(k==1);--i)
	{
		_merge(g[k][i]);
	}
	tong[c[k]]++;
	if(tong[c[k]]>_max){sum = c[k];_max = tong[c[k] ];}
	else if(tong[c[k]]==_max){sum+=c[k];}
	ans[k] = sum;
}
int main()
{
	int n;read(n);
	for(int i =1;i<=n;++i)read(c[i]);
	for(int i =1;i<n;++i)
	{
		int u,v;read(u);read(v);
		g[u].push_back(v);
		g[v].push_back(u);
	}
	dfs(1,1);
	for(int i=1;i<=n;++i)sort(g[i].begin(),g[i].end(),cmp);
	//从大到小排序,如此0就是father,1就是重儿子,其他就是轻儿子;
	//这里如果觉得时间复杂度多起来了的话可以dfs一遍找出father和重儿子然后和0或1交换即可,但是因为本题没有怎么卡这个时间,所以我就直接排序了,写一个对重儿子和父亲节点的初始化函数会比较长。
	dsu(1);
	for(int i =1;i<=n;++i)printf(" %lld"+(i==1),ans[i]);
	printf("\n");

	return 0;
}

这个是我觉得比较合理的Dsu写法,因为这个函数化的写法比main函数一大堆东西或者dsu函数一堆东西的写法更加清晰有层次;

这个题纯粹就是熟悉最基础的Dsu题目。

下面还有变种:很多树上计数问题都能转化为DSU;

F - Strange Memory
长春的F题问的是点对ij满足权值异或等于他们lca的权值,贡献为i^j;

这个题如果按照莽夫dsu的解法是不行的,因为对于aj ,他要找到权值 a j X O R a l c a a_j XORa_{lca} aj​XORalca​所在的各种i,而这各种i就是棘手的地方,因为i都是不相同的,你求的却是I XOR J的值,于是你就必须把i给分解掉;用tong[V][L][F]表示权值为V的众多i,在第L为为F的有多少个;如此就能够按位算权值,于是时间变成了 N ( L o g N ) 2 N(LogN)^2 N(LogN)2;
Code:

#include<bits/stdc++.h>
const double eps = 1e-6;
const double PI = acos(-1);
const int INF = 0x3f3f3f3f;
#define ms(a,k) memset(a,k,sizeof(a))
#define X first
#define Y second
#define pii pair<int ,int >
#define lowbit(a) a&(-a)
typedef long long ll ;
typedef unsigned long long ull;
using namespace std;
inline void read(int &x){scanf("%d",&x);}
const int mod = 1e9+7;
const int maxn = 1e5+10;
int a[maxn],tong[maxn*10][21][2],sz[maxn];//tong[v][l][f] 表示权值为v的数的下标在第l位上0的数量和1的数量;
ll ans =0;
vector<int >g[maxn];
int dfs(int k,int last)
{
	sz[k] = 1;
	for(int i =0;i<g[k].size();++i)
	{
		if(g[k][i]!=last)sz[k] += dfs(g[k][i],k);
	}
	return sz[k];
}
bool cmp(int x,int y){return sz[x]>sz[y];}
void _merge(int k,int lca)
{//合并k子树的信息
	if ( (a[lca]^a[k])<=1000000)
	{
		int rem = k;
		ll base = 1;
		for(int i =0;i<=20;++i)
		{
			//printf("*%d %d %d\n",i,rem&1^1,tong[a[lca]^a[k] ][i][rem&1^1] );
			ans += (ll )tong [ a[lca]^a[k] ][i][(rem&1)^1]*base;
			//rem^1表示某位上与rem&1不同才有贡献,贡献就是tong的数值,乘上base即为贡献;
			rem/=2;
			base*=2;
		}
	}

	for(int i =1;i<g[k].size();++i)_merge(g[k][i],lca);
}
void in(int k,int cut)
{
	int rem = k;
	for(int i =0;i<=20;++i)
	{
		tong[a[k] ][i][rem&1] += cut;//cut为-1则为出桶,为1则是入桶
		rem/=2;//更新rem
	}
}
void change(int k,int cut)
{
	in(k,cut);
	for(int i =1;i<g[k].size();++i)change(g[k][i],cut);
}
void dsu(int k)
{
	int len = g[k].size();
	for(int i = len-1;i>=1-(k==1);--i)
	{
		//printf(" %d %d\n",k,g[k][i]);
		dsu(g[k][i]);
		if( i!= (1-(k==1)) )change(g[k][i],-1);
	}
	for(int i = len-1;i>1-(k==1);--i)
	{
		_merge(g[k][i],k);
		change(g[k][i],1);
	}
	int rem = k;
	ll base = 1;
	for(int i =0;i<=20;++i)
	{
		ans += (ll )tong [ 0 ][i][ (rem&1)^1 ]*base;//如果某个地方是0,那么和任何数异或都是本身;
		rem>>=1;
		base<<=1;
	}
	in(k,1);//放入k;
}
int main()
{
	int n;read(n);
	for(int i =1;i<=n;++i)read(a[i]);
	for(int i =1;i<n;++i)
	{
		int u,v;read(u);read(v);
		g[u].push_back(v);
		g[v].push_back(u);
	}
	dfs(1,1);
	for(int i =1;i<=n;++i)sort(g[i].begin(),g[i].end(),cmp);
	dsu(1);
	printf("%lld\n",ans);
	return 0;
}
半桥LLC谐振DCDC变换器的设计与仿真(Simulink仿真实现) 内容概要:本文系统阐述了半桥LLC谐振DCDC变换器的设计与仿真方法,聚焦于其在Simulink环境下的建模、关键参数设计及闭环控制策略的实现。内容深入剖析了LLC谐振变换器的工作原理,包括谐振腔元件(Lr、Cr、Lm)的精确计算与优化方法,详细探讨了实现零电压开通(ZVS)等软开关技术的关键条件,并介绍了变频控制与恒压恒流双闭环控制逻辑的设计思路。通过构建完整的Simulink仿真模型,文章验证了系统在不同负载工况下的动态响应能力、高效率特性和良好的稳态性能,为理论分析提供了强有力的实践支撑。; 适合人群:具备电力电子技术基础理论知识和Simulink软件操作经验的电气工程、自动化及相关专业的本科高年级学生、研究生,以及从事开关电源、新能源变换器等电力电子设备研发的工程师。; 使用场景及目标:①深入理解LLC谐振变换器的核心工作机理与谐振参数的设计准则;②掌握在Simulink中搭建高保真度电力电子变换器仿真模型并实现复杂闭环控制的技术;③为高效率、高功率密度电源产品的研发提供理论指导、设计范例与仿真验证平台。; 阅读建议:建议读者结合文中的理论推导与仿真模型进行同步实践,重点动手调整谐振频率、观察ZVS实现过程,并反复调试PI控制器参数以优化系统的动态与稳态响应,从而深刻领悟LLC变换器的非线性动态特性和先进控制策略的精髓。 立即下载

相关推荐

状态估计【卡尔曼滤波kalman】UKF、EKF、粒子滤波PF学习与研究(Matlab代码实现)

内容概要:本文系统性地探讨了状态估计领域中的三种关键非线性滤波算法——无迹卡尔曼滤波(UKF)、扩展卡尔曼滤波(EKF)和粒子滤波(PF),深入剖析其理论基础、数学推导及在非线性、非高斯系统环境下的适用性差异。通过Matlab编程实现,详尽展示了各算法的核心步骤与仿真流程,并结合无人机姿态估计、轨迹跟踪等典型应用场景进行性能对比分析,验证了不同滤波方法在精度、稳定性和计算复杂度方面的表现。文中提供完整的代码实例与技术解析,涵盖状态预测、协方差更新、观测修正等关键环节,强化了理论与实践的结合,具有较高的科研参考价值与工程指导意义。; 适合人群:具备信号处理、控制理论或状态估计基础知识的研究生、科研人员,以及从事导航、自动化、机器人、航空航天等相关领域的工程技术人员。; 使用场景及目标:① 深入理解UKF、EKF与PF的算法原理及其在非线性系统中的实现机制;② 在目标跟踪、多传感器融合、惯性导航等实际项目中开展算法选型、仿真验证与性能优化;③ 支持科研论文复现、算法改进及工程原型开发。; 阅读建议:建议结合Matlab代码同步运行与调试,重点理解各滤波器的状态更新逻辑与误差协方差传播机制,尝试在不同噪声水平与系统非线性程度下对比算法鲁棒性,以深化对滤波器内在特性的掌握。

2020CCPC(长春) - Strange Memory(树上启发式合并+位运算)

题目大意:给出一棵n 个点组成的有根树,一号节点是根节点,现在要求实现 n * n 的公式: 题目分析:树上启发式合并,需要修改部分内部实现,如果可以想到树启的话,那么应该往子树上去靠拢,当每个点作为子树的根时,其可以作为 lca 然后去统计子树中可以匹配的 ( u , v ) 点对,这个题目因为 a[ i ] != 0,换句话说,点 u , v , lca( u , v ) 一定是互不相同的三个点,极大程度上简化了题目(因为三个点的形式一定是一个分叉的形状,不可能是链状的),换句话说,当 lca ...

Falcon的博客 2846

人工智能基于RAG与LangGraph的企业级客服系统优化:大模型推理加速与多Agent协同决策技术实现

内容概要:本文档是一份企业级AI项目面试总结,涵盖多家公司在大模型、RAG、LangGraph、Agent系统、知识图谱、NL2SQL等前沿技术方向的实操性问题与解答。重点包括RAG全流程优化(切分、存储、召回、推理、缓存)、大模型推理加速(vLLM、TensorRT-LLM、量化、PD分离)、Agent架构设计(状态管理、多智能体协作、记忆机制、安全控制)、LangGraph与LangChain的应用差异、AB测试与模型评估方法、以及在客服、问数、数字人等场景中的落地实践。同时涉及Python基础、系统设计、部署运维、国产化适配等综合能力考察。; 适合人群:具备1-3年工作经验,从事大模型应用开发、AI系统研发、NLP工程师等相关岗位的研发人员;熟悉Python、深度学习框架,有RAG、Agent或NL2SQL项目经验者更佳。; 使用场景及目标:①准备AI方向的技术面试,尤其是B2B企业、金融科技、智能客服、工业智能化领域的岗位;②深入理解RAG与Agent系统的工程实现细节,掌握性能优化、系统稳定性、安全性设计等关键技术点;③学习如何将理论模型应用于复杂业务场景,提升系统级设计与问题解决能力。; 阅读建议:此资源以真实面试问答形式呈现,建议结合自身项目经验对照学习,重点关注高频考点如vLLM原理、RAG优化策略、LangGraph状态机制、多Agent协作与回滚设计等内容,并动手实践相关技术点如FastAPI异步服务、Tracker状态持久化、分层chunk策略等,以达到融会贯通的效果。

2020 ccpc长春 F Strange Memory (树上启发式合并+位运算)

2020 ccpc长春 F Strange Memory (树上启发式合并+位运算) 题目 https://codeforces.com/gym/102832/problem/F 题意 给定一个含有n个节点的数,求下式的值。 ∑i=1n∑j=i+1n[ai⊕aj=alca(i,j)](i⊕j)\sum_{i=1}^n\sum_{j=i+1}^n[a_i⊕a_j=a_{lca(i,j)}](i⊕j)∑i=1n​∑j=i+1n​[ai​⊕aj​=alca(i,j)​](i⊕j) 意思大概就是给你两个结点,如果这

zhz的博客 1183

【一键搞定】ThinkPHP6.0.2+PHPStudy+Composer极速安装指南——附完整下载包与避坑技巧

本文提供了一份ThinkPHP6.0.2的完整下载包,并详细介绍了如何配合PHPStudy和Composer进行极速安装与配置。指南涵盖了环境准备、Composer国内镜像加速、项目部署及常见避坑技巧,旨在帮助开发者,尤其是内网或网络不佳的用户,快速搭建可运行的TP6开发环境,绕过依赖下载的繁琐步骤。

assembly8low的博客 1006

【MIT-BEVFusion代码解读】第四篇:融合特征fuser和解码特征decoder

的大小,实际上源代码也是这么做的。最后将得到两个分支的特征进行。,第一个特征使用卷积降低通道数即可,第二个则需要反卷积来提升。所以backbone只有两个分支,都是5个卷积模块组成。的长和宽都减半至90,然后在经过5个相同的。将通道降至128,后面再接5个相同的。,将通道数128上至256,并且将。特征进行融合,这里使用的。部分由两部分组成,分别是。,这个分支首先经过第一个。,然后再卷积得到 =>提取特征,最后得到特征。得到了两个大小不同的。

非晚非晚的博客 2954

2020CCPC(长春站) F 【树上启发式合并】

Description Once there was a rooted tree. The tree containednnodes, which were numbered1,…,n. The node numbered1was the root of the tree. Besides, every nodeiwas assigned a numberai. Your were surprised to find that there were several pairs of no...

醉酒、冰城外 540

SAP MM委外加工保姆级教程:从BOM配置到MIGO发货的完整避坑指南

本文提供SAP MM模块中委外加工的完整操作指南,涵盖从BOM配置到MIGO发货的全流程。详细解析委外采购和工序委外两种模式,包括主数据配置、采购订单创建及物料移动等关键步骤,帮助用户规避常见错误,提升供应链管理效率。特别适合制造业企业实施SAP外包业务参考。

weixin_26905487的博客 527

[SDOI2013]森林(树上主席树+启发式合并+lca)

链接:https://ac.nowcoder.com/acm/problem/20577 来源:牛客网 题目描述 小Z有一片森林,含有N个节点,每个节点上都有一个非负整数作为权值。初始的时候,森林中有M条边。 小Z希望执行T个操作,操作有两类: Q x y k查询点x到点y路径上所有的权值中,第k小的权值是多少。此操作保证点x和点y连通,同时这两个节点的路径上至少有k个点。 L x y在点x和点y...

starlet_kiss的博客 464

微信DAT图片恢复全攻略:从文件定位到批量解密(附最新路径变化)

本文提供了一份详尽的微信DAT图片恢复指南,涵盖新旧版本文件路径变化解析、DAT文件定位方法以及批量解密操作步骤。针对微信图片加密存储为DAT格式的痛点,文章介绍了高效易用的图形化解密工具,帮助用户将加密文件快速还原为JPG、PNG等可查看格式,并强调了数据安全与隐私保护的重要性。

p4q5r6s7t的博客 743

AI与Agent赋能下的软件测试变革:面向未来测试工程师的工作方法论

AI Agent 软件测试 测试 software testing test

测试技师的自我修养 1232

启发式合并 时间复杂度分析

启发式合并 时间复杂度和原理分析

cg021111的博客 1417

第8章-认知工程:构建Agent的认知飞轮与自进化《万物皆映射》

认知架构(Cognitive Architecture)是一个系统组织和运行其认知过程的整体设计。对人类而言,认知架构是大脑的结构和功能组织方式;对 AI Agent 而言,认知架构是它处理信息、做出决策、学习经验的系统设计。固定映射 vs 进化映射维度固定映射 Agent进化映射 Agent知识静态(训练时确定)动态(持续积累)策略固定(设计时确定)自适应(经验驱动)工具预定义自主发现/创建错误处理硬编码规则从错误中学习能力边界固定持续扩展在认知工程中,技能。

AI天才研究院 104

树上启发式合并

树上启发式合并 前言: 今天又遇到启发式合并了,还没有写出来,还是整理一下。 什么时候用启发式合并? 当需要统计并合并子树的信息,然而一次合并的复杂度为O(n)O(n)O(n),整体复杂度为O(n2)O(n^2)O(n2)时,使用启发式合并可以将合并的复杂度降为O(nlogn)O(nlogn)O(nlogn)。 启发式合并的思想 举一个例子,现在有一棵树,每个节点涂有一个颜色。需要统计每颗子树上哪种颜色最多。 暴力合并 nt n;//size of tree vector<int> tree[m

bensanhuan的博客 435

037、有源钳位反激变换器(ACF)原理

文章摘要 有源钳位反激变换器(ACF)是一种克服常规反激电路漏感能量处理瓶颈的高效解决方案。文章从实际炸机案例切入,指出RCD钳位电路在高压、宽范围、高功率场景下的局限性。ACF通过增加钳位管和钳位电容,将漏感能量回收而非消耗,实现效率提升2-3%、精准电压钳位和更好EMI性能。文章详细解析了ACF四阶段工作过程、关键波形特征,并指出设计陷阱:漏感需保持1%-3%特定范围、钳位电容ESR要求严格、需专用控制IC支持互补驱动。最后给出实用调试建议,强调ACF适用于65W+功率场景,低压验证后再逐步升压的调试方

Jack010169的博客 255

【Burp入门第三十七篇】AutoRepeater插件安装使用教程+越权实战案例

AutoRepeater 通过接收满足特定条件的请求,按照预设的基础替换规则对请求进行处理。在接收到匹配请求后,它首先应用基础替换,然后针对每个定义的替换创建请求副本并应用该替换操作,从而实现对不同参数的修改和请求的重复发送,以此来全面检测 Web 应用的授权情况。1、自动化请求重复:能自动复制、修改并重发 HTTP 请求,避免了手动重复操作的繁琐,大大提高了 Web 应用授权测试的效率。2、灵活参数替换:可灵活改变邮箱地址、账号身份、角色、URL 和 CSRF 令牌等关键参数。

等风来 2035

树上启发式合并总结

前言 某一天发现一道树上启发式合并裸题,但我不会写…… 学习并刷了两天的题,是时候来写个总结了 正文 树上启发式合并(DSU on Tree),是一个在O(nlogn)O(nlogn)O(nlogn)时间内解决许多树上问题的有力算法。 但它的中心其实是——暴力! 没错,它正是由暴力优化而来。 我们先看一道例题:CF600E Lomsat gelral 题意简述:一棵树有n个结点,每个结点都是一种颜...

p_b_p_b的博客 6242

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

2020 ccpc长春 F Strange Memory (树上启发式合并)

直接暴力每颗子树复杂度是O(n2n^2n2)的,树上启发式算法是可以将复杂度优化到O(nlogn)的。 启发式算法是基于人类的经验和直观感觉,对一些算法的优化。 举个栗子:并查集的按秩合并,合并时将秩(集合的高度)小的集合合并到秩大集合上去。 对于树来说也是可以的,不过合并树的话就不能看高度了,而要看树的节点数量,沿用树链剖分的轻重儿子的概念,就是将轻儿子的子树的贡献合并到重儿子的子树上去。 #include<iostream> #include<cstdio> #include&.

qq_45288870的博客 892

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

2020CCPC(长春) - Ragdoll(启发式合并+带权并查集)

题目大意:初始时给出 n 个集合,每个集合中都包含有一个数字,现在要求执行 m 次操作,每次操作分为下列三种类型: 1 x y:在 x 位置新建一个集合,并且放置一个数字 y 2 x y:合并集合 x 和集合 y 3 x y:将集合 x 中的数字修改为 y 每次执行完操作后需要回答,对于每个集合而言,的匹配数之和 题目分析:首先考虑何时 x 和 y 才可以匹配,假设任取两个数字 x 和 y,再设 gcd( x , y ) = gcd = x ^ y,需要满足 x % gcd == 0 &..

Falcon的博客 951

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

树上启发式合并(作为初学者的一点领悟)

浅谈 启发式合并,顾名思义就是用来处理合并类的问题的。它是数据结构相关问题中的一种重要思想,原则是:把“小的结构”合并到“大的结构”中,并且只增加“小的结构的代价”,因此可以减少时间复杂度 正文 先来一道例题吧!E. Lomsat gelral 大意即为:给定一颗树(以1为根节点), 每棵树上都有一种颜色, 对于每个顶点v,找出顶点v的子树中所有数量最多的颜色的编号总和。 一个朴素做法的时间复杂度是O(n2)的, 这道题用到的启发式合并就是用来优化这个朴素做法的。 朴素做法:对于每个节点,暴力遍历子树,将它

m0_53430148的博客 2171

2020ccpc长春(Strange Memory)

Strange Memory Once there was a rooted tree. The tree containednnodes, which were numbered1,…,n. The node numbered1was the root of the tree. Besides, every nodeiwas assigned a numbera​i​​. Your were surprised to find that there were several pai...

黑大帅的博客 884

【算法】树上启发式合并算法

树上启发式合并算法是启发式合并算法在树上的应用。下面我直接通过一个例子来讲解这个算法。         例:给定一棵有根树,树的结点编号为1~n,根结点为结点1。结点i有颜色col[i],其中1≤col[i]≤n。要求回答m个询问,每个询问回答颜色c在子树u中出现多少次。         显然要将查询离线处理,即对子树u的查询都“挂”到结点u上。我们用cnt[c]表示颜色c出现的次数,那么一种

ZJZ的博客 6942

【CCPC】2020CCPC长春 F - Strange Memory | 树上启发式合并(dsu on a tree)、主席树

人均会dsu的赛区..早知道就把数组开大一点了.. 差20分钟就银了呀.. 最后一场ccpc留下遗憾了... 题目大意: 给出一个树 让你求出: 题目思路: 看到lca,那就只能是枚举每个点作为lca的贡献 所以枚举当前节点作为lca时,所以能够产生贡献的就是,他的任意两棵子树的贡献 所以直接枚举当前这个子树的所有点,然后和之前的权值去匹配 这里需要按位拆分一下: a^(b+c) != a^b + a^c 但是把数按位拆分之后,对于当前lca权值是ai = c,当前点是ak =

一只酷酷光儿的博客 3320

2020ccpc长春F Strange Memory(树上启发式合并)

题目大意: 给定一个 nnn 个节点的树,求: ∑i=1n∑j=i+1n[ai⊕aj=alca(i,j)](i⊕j)\sum_{i=1}^n \sum_{j=i+1}^n [a_i ⊕ a_j = a_{lca(i,j)}](i ⊕ j)i=1∑n​j=i+1∑n​[ai​⊕aj​=alca(i,j)​](i⊕j) 题目分析: 我们发现在一条链上的两个点 u,vu,vu,v (depu<depvdep_u<dep_vdepu​<depv​),有 lca(u,v)=ulca(u,v)=ul.

羊驼的博客 407
上一篇: Codeforces Round #716 (Div. 2) CD题解证明
下一篇: HDU - 6315 / 2018杭电多校第二场G - Naive Operations【线段树变种】
DevourPower
博客等级 码龄7年 52粉丝 78原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值