洛谷P2420 让我们异或吧 (树链剖分法)

嵌入式笔试面试题库 250 题|13 章从 C 语言到 FreeRTOS,每题带追问 面试里有两类问题。第一类问「static 有几个作用」,第二类问「串口丢数据你怎么查」。第一类决定你能不能进二面,第二类决定二面之后还有没有下文。 这份合并版 250 题、13 章,把上篇与下篇收在一本: · 上篇 130 题(一至六章):单片机与体系结构、C 语言关键字、指针与内存、位运算与寄存器、中断与并发、编译链接与内存布局; · 下篇 120 题(七至十三章):GPIO 与时钟、定时器与 ADC、串口 I2C SPI、DMA 与中断、FreeRTOS、通信协议与总线、项目与工程实践。 每题结构一致:一段分点参考答案(①②③ 给要点骨架),紧跟一条追问,写明面试官往下会挖哪一层。答案尽量落到三层——现象、根因、验证方法。比如「PWM 出不来波形」,不只列六项检查顺序,还说清为什么 TIM1 容易漏掉 MOE 这一位、怎么用示波器确认。 三个附录:A 是 40 天复习路线(每天 40 分钟,标每天题量与当章重点);B 是十三章自测评分表(现象 / 根因 / 验证三列打分);C 是按现象查题的排障索引,遇到具体问题直接定位到题号。 交付:Word 可编辑版 + PDF 打印版(A4 / 70 页)+ 使用说明。题号连续 Q001–Q250,目录与附录各一套,跨篇追问能顺着查。 说明:寄存器位定义与分频关系按 STM32F103 系列整理,换 F4/F7/G0 需按对应手册核对;FreeRTOS 部分按 10.x 之后接口描述。题库不替代动手调试。 立即下载

题面

给出N<=100000节点的树,边上有权值,对于M<=100000次询问,输出其路径上所有权值的异或

分析

这题简单的做法其实是预处理到根的前缀,然后对于查询直接异或两个到root的权值即可。。。(加减法,在异或中都是异或),所以才是普及+级别。。。

先把运算当作加法:
u到v的路径即u→lca→v,延长这个路径,u→lca→root→lca→v,加减法情形,可以预处理root→lca,从而将重复段删除两次,这样发现对于这种问题只要求出所有节点到root的权值即可

对于异或,甚至更简单,u→root的权值xorv→root的权值就直接等于u→v的权值异或,这是因为重复段的异或会得0.
即u→lca→root→lca→v,红色部分在异或下得0,所以处理出所有节点到根的异或,查询时直接两者异或即可。

而这里一开始我被树链剖分误导了。。。。放了树链剖分的板子上去,但是结果也不差,最终用线性前缀和维护树链剖分得到的片段即可

和求LCA相比,多的部分就是,通过换dfs序,将重链上的数据都放在了一起,便于区间维护,加上轻重链均最多logn段,就做到了单次查询O(logn)的复杂度

取出这些链的操作详见下面calxor函数,将异或换为加法等其他运算就可以改变作用,但取链的方式仍然没变

代码

预处理:将线段上的权值放到节点上,节点的选择优先层深的(即最后会导致根上无权值,边上的权值都放到更向下的点上)

#include<iostream>
#include<vector>
#include<algorithm>
#include<string.h>
#include<cstring>
#include<string>
using namespace std;

int A[100005];//用前缀和维护的数组
int preA[100005];//A前缀和
int B[100005];//原数组,经过dfs序映射后得到A
void sswap(int& a, int& b)
{
	int t = b;
	b = a;
	a = t;
}
class Tree_Chain {
private:
	const static int MAXN = 100005;
	int siz[MAXN];//表示其子树的节点数
	int fa[MAXN];//当前节点的父节点
	int son[MAXN];//节点的重儿子
	int top[MAXN];//重链顶
	int dep[MAXN];//当前节点深
	int l[MAXN];//dfs序
	std::vector<pair<int, int> >linker[MAXN];//存顶点存权值,后面的> >间要有空格
public:
	int dfs_clock = 0;
	void dfs1(int x)//x是当前节点(当前树根)
	{
		int cur;
		siz[x] = 1;
		for (int i = 0; i < linker[x].size(); i++)
		{
			cur = linker[x][i].first;
			if (cur != fa[x]) //不是fa
			{
				B[cur] = linker[x][i].second;//预处理,将边权放到点编号上
				dep[cur] = dep[x] + 1;//更新dep
				fa[cur] = x;//更新fa
				dfs1(cur);
				siz[x] += siz[cur];//更新siz
				if (siz[cur] > siz[son[x]])son[x] = cur;//更有可能成为重儿子
			}
		}
	}
	void dfs2(int x, int t)//当前节点x,当前重链顶的编号
	{
		l[x] = ++dfs_clock;//更新dfs序
		A[dfs_clock] = B[x];//换序映射,使重链节点在A上连续,A用前缀和维护
		top[x] = t;
		if (son[x])dfs2(son[x], t);//继续连重链
		int cur;
		for (int i = 0; i < linker[x].size(); i++)
		{
			cur = linker[x][i].first;
			if (cur != fa[x] && cur != son[x])//非父亲非重儿子
				dfs2(cur, cur);//在其他儿子上找更小一些的
		}
	}
	void insert(int& u, int& v, int& w)
	{
		linker[u].push_back(make_pair(v, w));
		linker[v].push_back(make_pair(u, w));
	}
	int Lca(int& u, int& v)
	{
		while (top[u] != top[v])
		{
			if (dep[top[u]] > dep[top[v]])u = fa[top[u]];
			else v = fa[top[v]];
		}
		return dep[u] < dep[v] ? u : v;
	}
	int calxor(int& u, int& v)//取轻/重链并在区间上处理
	{
		int ans = 0;
		while (top[u] != top[v])
		{
			if (dep[top[u]] < dep[top[v]])sswap(u, v);
			ans ^=( preA[l[u]] ^ preA[l[top[u]] - 1]);//l[top[u]]到l[u]是dfs序上连续的一段
			u = fa[top[u]];
		}
		if (dep[u] > dep[v])sswap(u, v);//到了一个重链上,切换到u比v浅的状态
		ans ^=( preA[l[v]] ^ preA[l[u]]);
		return ans;
	}
}TC;
int main()
{
	ios::sync_with_stdio(false);
	int n, u, v, temp, q;
	cin >> n;
	for (int i = 1; i < n; i++)
	{
		cin >> u >> v >> temp;
		TC.insert(u, v, temp);
	}
	TC.dfs1(1);
	TC.dfs2(1, 1);
	for (int i = 2; i <= n; i++)
	{
		preA[i] = preA[i - 1] ^ A[i];
	}
	cin >> q;
	for (int i = 0; i < q; i++)
	{
		cin >> u >> v;
		cout << TC.calxor(u, v) << endl;
	}
	return 0;
}

政府科技管理者如何提升科技成果评估的准确性与透明度?.docx 政府科技管理者如何提升科技成果评估的准确性与透明度? 立即下载

相关推荐

双闭环PWM整流器VOC控制 +SVPWM调制仿真(Simulink仿真实现)

内容概要:本文详细介绍了基于Simulink平台构建的双闭环PWM整流器VOC(虚拟磁链定向控制)与SVPWM(空间矢量脉宽调制)相结合的仿真模型,系统阐述了三相电压型PWM整流器在电压定向控制策略下的建模方法与控制实现。通过设计外环直流电压控制与内环电流控制的双闭环结构,实现了对整流器的高功率因数运行、能量双向流动及动态性能优化的精确调控。结合SVPWM调制技术,有效提升了直流侧电压利用率并显著降低输出电流谐波含量,增强了系统的整体效率与稳定性。该仿真模型适用于新能源发电、电动汽车充电系统、微电网等高性能电能变换应用场景,文档还配套提供了丰富的学习资源与技术支持渠道,便于深入研究与工程实践。; 适合人群:面向电气工程、自动化、电力电子及相关专业的高校学生、科研人员以及从事新能源、智能电网、电力传动等领域研发工作的工程师;尤其适合已具备自动控制理论、电力电子变换技术和MATLAB/Simulink仿真基础的专业人士进一步深化学习与应用。; 使用场景及目标:①深入理解PWM整流器的工作机理及其双闭环控制系统的架构设计;②掌握VOC控制与SVPWM调制的协同工作机制,提升系统动静态响应性能;③支撑科研课题、课程设计、毕业设计或实际工程项目中的整流器控制系统开发与验证;④作为高级电能变换技术的学习范例,促进对现代电力电子系统控制策略的综合理解与创新能力培养。; 阅读建议:建议结合文中提供的百度网盘链接与公众号资源,下载完整的Simulink仿真模型进行实操演练,在MATLAB环境中调整控制器参数并观察仿真结果,深入剖析控制逻辑与系统响应特性;同时可参考同系列资源如PI双闭环控制、电网不平衡工况下的控制策略等案例,开展对比分析与拓展研究,全面提升系统建模与控制设计的综合能力。

1734. 解码异或后的排列

1734. 解码异或后的排列 给你一个整数数组perm,它是前n个正整数的排列,且n是个奇数。 它被加密成另一个长度为n - 1的整数数组encoded,满足。比方说,如果perm = [1,3,2],那么encoded = [2,1]。 给你encoded数组,请你返回原始数组perm。题目保证答案存在且唯一。 示例 1: 输入:encoded = [3,1] 输出:[1,2,3] 解释:如果 perm = [1,2,3] ,那么 encode...

The Shawshank Redemption 203

两路半桥LLC谐振变换器软开关Simulink仿真(模拟谐振参数不同、分裂电容)

内容概要:本文围绕两路半桥LLC谐振变换器的软开关技术展开,基于Simulink平台构建了详细的仿真模型,重点研究了不同谐振参数(如谐振电感、谐振电容)以及分裂电容结构对系统性能的影响。通过开环与闭环控制策略的对比分析,探讨了变换器在启动过程中的动态响应特性与稳定性,并实现了软启动设计,有效降低了启动冲击。仿真内容涵盖谐振腔的工作模态、ZVS(零电压开关)与ZCS(零电流开关)的实现条件,以及分裂电容对电压均衡和效率的优化作用,全面展示了LLC变换器在高频高效电源中的应用潜力。; 适合人群:电力电子、电气工程及相关专业的高校研究生、科研人员及从事开关电源设计的工程技术人员。; 使用场景及目标:①用于深入理解LLC谐振变换器的工作原理与软开关实现机制;②为高频高效率DC-DC变换器的研发提供仿真验证平台;③支撑科研项目中的拓扑优化与控制算法设计,尤其适用于需要分裂电容结构提升性能的场合。; 阅读建议:建议结合电力电子基础理论,先掌握LLC谐振变换器的基本工作模态,再逐步深入仿真模型细节,重点关注参数扫描与闭环动态响应的仿真结果,以实现理论与实践的有效结合。

洛谷 P2420 让我们异或吧

洛谷 P2420 让我们异或吧 题目描述 异或是一种神奇的运算,大部分人把它总结成不进位加法. 在生活中…xor运算也很常见。比如,对于一个问题的回答,是为1,否为0.那么: (A是否是男生 )xor( B是否是男生)=A和B是否能够成为情侣 好了,现在我们来制造和处理一些复杂的情况。比如我们将给出一颗树,它很高兴自己有N个结点。树的每条...

qq_34527468的博客 506

双Buck电路并联VDCM下垂控制(Simulink仿真实现)

内容概要:本文提供了一个基于Plecs软件的全桥LLC谐振变换器高精度仿真模型,旨在通过系统化建模与仿真手段深入剖析LLC谐振变换器的工作原理、动态响应特性及关键参数设计方法。该模型完整涵盖主电路拓扑结构、软开关实现机制、谐振参数配置与闭环控制策略等核心内容,支持对变换器的效率优化、电压调节能力、谐波抑制性能及瞬态响应等关键指标进行全面评估,适用于电力电子领域的科研分析、工程设计与教学实践。; 适合人群:具备电力电子技术基础及相关仿真经验的高校研究生、科研机构研究人员以及从事高频开关电源、DC-DC变换器开发的工程技术人员。; 使用场景及目标:①深入理解全桥LLC谐振变换器的软开关实现机理与谐振腔参数(如Lr、Cr、Lm)的设计方法;②验证并优化电压/频率闭环控制策略,提升系统动态性能与稳定性;③作为高校课程或培训项目的教学案例,帮助学生掌握高频谐振变换器的建模、仿真与分析流程。; 其他说明:该仿真模型可与MATLAB/Simulink等工具联合使用,便于进行控制系统算法开发与系统级协同仿真;建议使用者结合理论计算、仿真调试与实验验证,形成“设计-仿真-验证”的完整闭环,以全面提升对LLC变换器系统级理解与工程应用能力。

【大模型智能体】高频面试题解析:核心技术与多场景应用系统设计

内容概要:本文档是一份大模型与智能体领域的高频面试题集,系统梳理了从Python基础、数据结构与算法、机器学习、深度学习、NLP到大模型核心技术(如Transformer、LayerNorm、LoRA、RAG、Agent)的完整知识体系。文档通过23个实战项目(如智能客服、商品图谱、RAG问答系统等)串联理论,涵盖项目周期、技术架构、实现流程、核心模块与技术细节,深入探讨了分布式训练、模型微调、函数调用、记忆管理等前沿技术,旨在帮助开发者掌握大模型应用开发与面试应对的综合能力。; 适合人群:具备一定编程基础,工作1-3年的研发人员。; 使用场景及目标:①系统掌握大模型与智能体的核心技术栈,为求职面试做准备;②学习如何将理论知识应用于实际项目,如构建智能客服、RAG系统和多智能体协作平台。; 阅读建议:此资源以开发简化版Spring学习其原理和内核,不仅是代码编写实现也更注重内容上的需求分析和方案设计,所以在学习的过程要结合这些内容一起来实践,并调试对应的代码。

01Trie树【p2420】 让我们异或吧

Description 异或是一种神奇的运算,大部分人把它总结成不进位加法. 在生活中…xor运算也很常见。比如,对于一个问题的回答,是为1,否为0.那么: (A是否是男生 )xor( B是否是男生)=A和B是否能够成为情侣 好了,现在我们来制造和处理一些复杂的情况。比如我们将给出一颗树,它很高兴自己有N个结点。树的每条边上有一个权值。我们要进行M次询问,对于每次询问,我们想知道某两点之间的路径...

weixin_30828379的博客 120

restbed编译笔记

Restbed 可以构建出基于asio库的restfulAPI服务,Restbed 4.7版本使用了1.12.0版本的asio(其他版本编译不通过),可直接访问github下载:https://github.com/chriskohlhoff/asio/tree/asio-1-12-0。另外Restbed还依赖openssl库(可直接下载exe的安装包,安装后取出lib库及头文件放到到restbed\dependency\openssl中即可,https://slproweb.com/download/W.

mahong100的博客 2106

【洛谷P2420】让我们异或吧【DFS】

题目大意: 题目链接:https://www.luogu.org/problemnew/show/P2420 给出一棵树,每条边有一个权值,输出指定点的路径异或值。 思路: 首先,这到题是我在想刷LCALCALCA的时候遇到的,结果这道标签是LCALCALCA的题目我却想不到为什们要用LCALCALCA,一个DFSDFSDFS就可以过。 其实要求两个点的路径异或值就是xor[root][x]xo...

stoorz 360

基于 国产USRP B210 的通信+侦测+干扰三合一实验平台,解锁无线攻防全场景!

在当代复杂电磁环境与多样化通信需求并存的背景下,软件定义无线电(SDR)技术正展现出前所未有的系统灵活性与功能可重构性。由两台USRP-LW B210软件无线电设备模拟无线链路通信过程,能够模拟多种无线通信信号传输及图像传输场景,适用于通信协议验证、抗干扰测试及教学实验。,支持"通信-侦测-干扰-优化"的闭环实验流程,为无线通信领域的教学科研与工程应用提供了一套经济高效、功能完备的解决方案。系统可对通信链路信号进行快速、自动化侦测、识别、告警,并支持多种干扰信号生成、模式切换及效果评估功能。

luowave2012的博客 832

医学图像中的小目标病灶检测难题:我的硕士研究总结与思考

医学图像中的小目标检测和分割,主要指在CT、MRI、超声等医学影像中识别和分割微小病灶或细小结构。这些小目标通常体积小、边界模糊、特征不明显,却往往是关键病灶,例如肺部小结节、脑微出血、乳腺微钙化等。

weixin_45638136的博客 2368

Smart OJ 2484 Sum of xor 思维题 [二星]

题目Problem Sum of xor Time Limit: 1000ms Memory Limit: 65536KB 题目链接:SMOJ描述Descript.求1⊙2⊙…⊙N 的值。 A⊙B 即A,B 按位异或。输入Input1

Loi_Seavot的博客 1087

Fiddler抓包实战:5分钟搞定微信公众号历史消息接口分析(附完整Python代码)

本文详细介绍了如何使用Fiddler抓包工具逆向分析微信公众号历史消息接口,并提供完整的Python代码实现。从环境准备、动态参数捕获到商业级采集系统架构设计,全面解析了突破官方接口限制的技术方案,帮助开发者高效获取公众号文章数据。

tree8的博客 327

luogu2420 让我们异或和吧

树链剖分、线段树 || 树上前缀和 || LCT

ACoder 733

XXL-Job 分布式定时任务

XXL-JOB是一款轻量级分布式定时任务调度框架,采用调度中心与执行器分离架构,解决单机任务宕机、重复执行等问题。核心模块包括调度中心(管理任务配置、触发调度)和执行器(执行任务逻辑),支持集群部署保证高可用。框架提供丰富的任务触发规则、路由策略、阻塞策略及完善的运维能力,适用于多种业务场景如数据同步、定时推送等。安装时需准备MySQL数据库并初始化表结构,通过Docker部署调度中心服务。相比其他定时框架,XXL-JOB具有轻量化、可视化等优势,是中小企业的首选方案。

郭宝的博客 698

Python爬虫教程:抓取区块链交易信息及加密货币市场数据

随着区块链技术和加密货币的迅猛发展,区块链交易和加密货币市场的数据逐渐成为金融、技术、经济研究等领域的热点。对于开发者和研究者而言,实时获取区块链交易数据和加密货币市场行情,对于投资分析、市场预测、技术研究等具有重要的参考价值。本文将通过Python爬虫技术,介绍如何抓取区块链交易信息及加密货币市场数据,详细阐述数据获取的原理、技术方案、实现方法以及抓取到的数据的存储与分析。我们将依托最新的爬虫技术,如requestsSeleniumScrapy,以及相关的数据处理库(如pandasmatplotlib。

2201_76125261的博客 2777

洛谷P2420 让我们异或吧(树链剖分)

题目描述异或是一种神奇的运算,大部分人把它总结成不进位加法. 在生活中…xor运算也很常见。比如,对于一个问题的回答,是为1,否为0.那么: (A是否是男生 )xor( B是否是男生)=A和B是否能够成为情侣 好了,现在我们来制造和处理一些复杂的情况。比如我们将给出一颗树,它很高兴自己有N个结点。树的每条边上有一个权值。我们要进行M次询问,对于每次询问,我们想知道某两点之间的路径上...

weixin_30947043的博客 155

保研考研机试攻略:python笔记(4)

保研考研机试攻略:python笔记(4)二分法+最大公约数+最小公倍数+素数判断+幂次方mod方法+匹配问题+哈希算法+哈夫曼编码+二叉树

qq_63349644的博客 1096

AC日记——让我们异或吧 洛谷 P2420

题目描述 异或是一种神奇的运算,大部分人把它总结成不进位加法. 在生活中…xor运算也很常见。比如,对于一个问题的回答,是为1,否为0.那么: (A是否是男生 )xor( B是否是男生)=A和B是否能够成为情侣 好了,现在我们来制造和处理一些复杂的情况。比如我们将给出一颗树,它很高兴自己有N个结点。树的每条边上有一个权值。我们要进行M次询问,对于每次询问,我们想知道某两点之间的路径上所有边...

weixin_30379911的博客 63

Python 爬虫实战:爬取去哪儿网酒店评价,提取住宿体验关键词

本文介绍了基于去哪儿网酒店评价数据的爬取与分析方法。首先通过分析网页结构和数据加载机制,定位到评价数据的JSON接口及关键参数。然后使用Python搭建爬虫环境,实现多页评价数据的批量采集与存储,并通过反爬策略确保数据获取的稳定性。在文本分析环节,采用jieba分词和TF-IDF算法提取高频关键词,结合词云可视化展示用户关注点。分析结果显示位置、服务、卫生是核心关注维度,同时识别出好评与差评的关键驱动因素。该方法为酒店服务优化和消费者决策提供了数据支持,并可通过扩展实现更深入的情感分析和竞品对比。

2503_91057718的博客 999

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

洛谷 2420 让我们异或吧

【题解】   树链剖分+线段树的模板题。每个点的点权是它父亲到它的边的边权,这样我们就完成了把边权变为点权的操作,之后直接树剖即可。   注意回答询问的时候要把lca(x,y)去掉,因为x到y的链上并不包含lca(x,y)到它的父亲的边。 1 #include<cstdio> 2 #include<cstring> 3 #include<alg...

weixin_30599769的博客 127

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

hdu5416(求树上有多少对点对使其路径上的结点的异或值为查询值S)

HDU5416 题解:我们先预处理每个节点i到根节点1的路径上异或值d[i],然后我们发现两个节点i,j的路径上边权的异或值为d[i]^d[j],因为他们俩距离根节点重复的部分可以异或成0 #include <bits/stdc++.h> using namespace std; typedef long long LL; const LL mod=1e9+7; const LL maxn=1e6+10; LL n,q; struct node{ LL to; LL w; };

qq_41856950的博客 248

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

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

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

洛谷 [P2420] 让我们异或吧

某两点之间的路径上所有边权的异或值即dis1^dis2……^disn. 由于x^y^y=x,所以dfs预处理出每一点到根节点的异或值,对于每次询问,直接输出 disu^disv.#include <iostream> #include <cstdio> #include <algorithm> #include <cstdlib> using namespace std; int read(){

Mr_Wolfram的高维空间 507

P2420 让我们异或吧(树链剖分)

题目描述 异或是一种神奇的运算,大部分人把它总结成不进位加法. 在生活中…xor运算也很常见。比如,对于一个问题的回答,是为1,否为0.那么: (A是否是男生 )xor( B是否是男生)=A和B是否能够成为情侣 好了,现在我们来制造和处理一些复杂的情况。比如我们将给出一颗树,它很高兴自己有N个结点。树的每条边上有一个权值。我们要进行M次询问,对于每次询问,我们想知道某两点之间的路径上所有...

a6823202的博客 153

牛客----异或Tree (树链剖分)

题目链接 题面: 题解: 树链剖分 维护点x到根节点的异或前缀和,更改某一点的值视为更改某棵子树的值。 询问的时候分类讨论lca即可。 #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<cmath> #include<queue> #include<set> #include<vector> #d

_Griefs 287
上一篇: 洛谷P5002 专心OI - 找祖先
下一篇: 洛谷 P3225 [HNOI2012]矿场搭建
engineoid
博客等级 码龄10年 6粉丝 52原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值