Bzoj 1036 树的统计

【BZOJ 1036】[ZJOI2008]树的统计Count 【树链剖分+线段树】 裸题.. 开始的代码有个bug,开始的build() 函数是这样写的:void build(int u,int l,int r){ tr[u].l=l,tr[u].r=r; if(l==r){ tr[u].mx=tr[u].sum=val[l]; return; }; int mid=(l+r)>>1; build(ls,l,mi 阅读详情

Description

一棵树上有n个节点,编号分别为1到n,每个节点都有一个权值w。我们将以下面的形式来要求你对这棵树完成一些操作: I. CHANGE u t : 把结点u的权值改为t II. QMAX u v: 询问从点u到点v的路径上的节点的最大权值 III. QSUM u v: 询问从点u到点v的路径上的节点的权值和 注意:从点u到点v的路径上的节点包括u和v本身

Input

输入的第一行为一个整数n,表示节点的个数。接下来n – 1行,每行2个整数a和b,表示节点a和节点b之间有一条边相连。接下来n行,每行一个整数,第i行的整数wi表示节点i的权值。接下来1行,为一个整数q,表示操作的总数。接下来q行,每行一个操作,以“CHANGE u t”或者“QMAX u v”或者“QSUM u v”的形式给出。 对于100%的数据,保证1<=n<=30000,0<=q<=200000;中途操作中保证每个节点的权值w在-30000到30000之间。

Output

对于每个“QMAX”或者“QSUM”的操作,每行输出一个整数表示要求输出的结果。

Sample Input

4
1 2
2 3
4 1
4 2 1 3
12
QMAX 3 4
QMAX 3 3
QMAX 3 2
QMAX 2 3
QSUM 3 4
QSUM 2 1
CHANGE 1 5
QMAX 3 4
CHANGE 3 6
QMAX 3 4
QMAX 2 4
QSUM 3 4

Sample Output

4
1
2
2
10
6
5
6
5
16

题解

2014.4.6 树链剖分。。。

参照了蒋一瑶神犇模板

http://wenku.baidu.com/link?url=SGLjpJtYbJ0HxDYlU_GMXE1qCFS0gbmpDGWPxI7mQuNAsJP0y872mNKwpZ8P054g5XMhFGZbMUjZvN5hcnxFFUEfGBj6-tnkpnJvnVSlqGS

树链剖分就是把树拆成一系列链,然后用数据结构对链进行维护。

通常的剖分方法是轻重链剖分,所谓轻重链就是对于节点u的所有子结点v,size[v]最大的v与u的边是重边,其它边是轻边,其中size[v]是以v为根的子树的节点个数,全部由重边组成的路径是重路径,根据论文上的证明,任意一点到根的路径上存在不超过logn条轻边和logn条重路径。

这样我们考虑用数据结构来维护重路径上的查询,轻边直接查询。

通常用来维护的数据结构是线段树,splay较少见。

具体步骤

预处理

第一遍dfs求出树每个结点的深度deep[x],其为根的子树大小size[x]

以及祖先的信息fa[x][i]表示x往上距离为2^i的祖先

第二遍dfs

ž根节点为起点,向下拓展构建重链

选择最大的一个子树的根继承当前重链

其余节点,都以该节点为起点向下重新拉一条重链

ž给每个结点分配一个位置编号,每条重链就相当于一段区间,用数据结构去维护。

把所有的重链首尾相接,放到同一个数据结构上,然后维护这一个整体即可

修改操作

ž1、单独修改一个点的权值

根据其编号直接在数据结构中修改就行了。

2、修改点u和点v的路径上的权值

(1)若u和v在同一条重链上

直接用数据结构修改pos[u]至pos[v]间的值。

(2)若u和v不在同一条重链上

一边进行修改,一边将u和v往同一条重链上靠,然后就变成了情况(1)。

查询操作

ž查询操作的分析过程同修改操作

题目不同,选用不同的数据结构来维护值,通常有线段树和splay

新手如何学习车载底层嵌入式软件开发(AutoSar) 汽车嵌入式开发 阅读详情

相关推荐

狗都能看懂的MAML原理讲解和代码实现

meta-leaning指的是元学习,元学习是深度学习的一个分支,一个好的元模型(meta-learner)应该具备对新的、少量的数据做出快速而准确的学习。通俗的来讲, 对于人来说,给几张橘猫的图片让看一下,再给你几张没见过的英短猫图片,你一定能很快识别出来都是猫。但是对于神经网络来说,并非如此。如果让一个小汽车分类网络去识别不同的大货车,那效果肯定很差。而传统的CNN网络都是输入大量的数据,然后进行分类的学习。但是这样做的问题就是,神经网络的通用性太差了,根本达不到“智能”的标准。而人类的认知系统,可以通

个人学习笔记 6万+

Bzoj 1036 树的统计 分类: ACM TYPE ...

Description 一棵树上有n个节点,编号分别为1到n,每个节点都有一个权值w。我们将以下面的形式来要求你对这棵树完成一些操作: I. CHANGE u t : 把结点u的权值改为t II. QMAX u v: 询问从点u到点v的路径上的节点的最大权值 III. QSUM u v: 询问从点u到点v的路径上的节点的权值和 注意:从点u到点v的路径上的节点包括u和v本身 ...

weixin_34275734的博客 161

Android TV开发:RecyclerView焦点控制实践与优化

在Android TV应用开发中,焦点控制是提升用户体验的关键技术。不同于移动端触摸交互,TV端通过遥控器方向键导航,需要精确的焦点管理机制。RecyclerView作为动态列表的核心组件,其焦点控制涉及视图复用、导航逻辑和视觉反馈等核心技术点。通过合理配置focusable属性、自定义焦点查找算法以及优化动画性能,开发者可以解决TV端常见的焦点跳转异常、视觉反馈延迟等问题。特别是在视频点播、智能家居控制等场景中,良好的焦点控制能显著提升操作效率。本文结合网格布局焦点环绕、分页加载焦点保持等实战案例,深入解

weixin_34195142的博客 468

洛谷——P2590 [ZJOI2008]树的统计

https://www.luogu.org/problem/show?pid=2590#sub 题目描述 一棵树上有n个节点,编号分别为1到n,每个节点都有一个权值w。 我们将以下面的形式来要求你对这棵树完成一些操作: I. CHANGE u t : 把结点u的权值改为t II. QMAX u v: 询问从点u到点v的路径上的节点的最大权值 III. QSUM u v: 询问...

agcozdwdfvds08078的博客 212

ABB机器人姿态与四元数(笔记)

通常使用机器人作业时,机器人的法兰轴(5轴)往往是垂直与作业平面的,此时需要将机器人的姿态调整(示教)到垂直于工作平面的状态,然后记录当前的姿态,作为之后作业的参考标准姿态。不同机器人表示控件姿态的方式不一样,但也无外乎3中:旋转矩阵、欧拉角和四元数。 ABB机器人使用的是四元数(可转欧拉角)作为机器人控件姿态的表示方式。这里主要是记录在不通过示教的方式下,如何定义四元数,使机器人达到垂直于工作平面的姿态。 5轴竖直向下(常用):此时,各轴角度为 [0,0,0,0,9...

Zythonista的博客 1万+

zynq-7000学习笔记(八)——USB摄像头图像采集

PC平台:WINDOWS 10 64位 Xilinx设计开发套件:Xilinx_vivado_sdk_2015.4 开发板:Zed Board USB摄像头:罗技 C270(720P) linux源码:2016_R1 一、配置linux,支持UVC       如果是中星微的ZC3XX系列的芯片,则要进到GSPCA把ZC3XX的驱动选上

luotong86的专栏 1万+

【ZJOI2008】树的统计

Description   一棵树上有n个节点,编号分别为1到n,每个节点都有一个权值w。   我们将以下面的形式来要求你对这棵树完成一些操作:   I. CHANGE u t : 把结点u的权值改为t   II. QMAX u v: 询问从点u到点v的路径上的节点的最大权值   III. QSUM u v: 询问从点u到点v的路径上的节点的权值和   注意:从点u到点v的路径上的节点

lijf2001的博客 514

别再只设接触压力了!用ANSYS Workbench模拟O型圈密封泄漏的完整流程

本文详细介绍了在ANSYS Workbench中模拟O型圈密封泄漏的完整流程,重点解析了流体渗透压力载荷的设置与应用。通过双物理场耦合模型和精确的参数配置,帮助工程师准确评估密封性能,避免传统方法仅考虑接触压力的局限性。文章还提供了常见问题的解决方案和工程实践建议,提升密封设计的可靠性。

weixin_30372371的博客 398

【bzoj1036】【树链剖分】【ZJOI2008】树的统计Count

一棵树上有n个节点,编号分别为1到n,每个节点都有一个权值w。我们将以下面的形式来要求你对这棵树完成一些操作: I. CHANGE u t : 把结点u的权值改为t II. QMAX u v: 询问从点u到点v的路径上的节点的最大权值 III. QSUM u v: 询问从点u到点v的路径上的节点的权值和 注意:从点u到点v的路径上的节点包括u和v本身 非常裸的一个树链剖分题,可以当成模板题了。(

OIerHZ的博客 527

LLC变压器,常见的4大问题解决方案

其中之一是当付边的绕组的匝数或层数较多的时候,层间或匝间寄生电容和付边的漏感发生一个寄生的振荡,轻载的时候,这个振铃的幅度会达到很高,导致输出电压比设计的要高许多。但当输入是低压的时候,开关频率比较低,LLC谐振回路的增益较大,因而比较容易发生变压器饱和的问题。由于LLC变压器工作在LC谐振状态,LC谐振回路有个特点就是Q值问题,在这里Q值是大于1的,因而就会有实际加在变压器上的电压要比输入电压高的问题,因而在设计变压器的时候就必须考虑到这一点,否则变压器就不是工作在你设计的磁感应强度上。

1260

EtherCAT主站SOEM -- 29 -- STM32F767-SOEM通过 CSP模式(周期同步位置模式)控制一个电机转圈圈

以上就是EtherCAT主站SOEM – 29 – STM32F767-SOEM通过 CSP模式(周期同步位置模式)控制一个电机转圈圈的内容。有不明白的地方欢迎留言;有建议欢迎留言,我后面编写文档好改进。创作不容,如果文档对您有帮助,记得给个赞。

常驻客栈的博客--嵌入式EtherCAT 2238

树链剖分+线段树

树链剖分 一树上有 n 个节点,编号分别为 1 到 n,每个节点都有一个权值 w。我们将以下面的形式来要求你对这棵树完成一些操作: 1.CHANGE u t :把节点 u 权值改为 t; 2.QMAX u v :询问点 u 到点 v 路径上的节点的最大权值; 3.QSUM u v :询问点 u 到点 v 路径上的节点的权值和。 注意:从点 u 到点 v 路径上的节点包括 u 和 v 本身。 输入格式 第一行为一个数 n,表示节点个数; 接下来 n−1 行,每行两个整数 a,b,表示节点 a 与节点 b 之间

Little_Match_Boy的博客 341

SAP:QUERY中SQ02增加选择屏幕权限控制

【代码】SAP:QUERY中SQ02增加选择屏幕权限控制。

weixin_43734184的博客 2325

bzoj 1036 //1036: [ZJOI2008]树的统计Count 树链剖分

bzoj 1036 //1036: [ZJOI2008]树的统计Count 树链剖分 bzoj 1036 //1036: [ZJOI2008]树的统计Count //在线测评地址https://www.lydsy.com/JudgeOnline/problem.php?id=1036 更多题解,详见https://blog.youkuaiyun.com/mrcrack/article/de...

mrcrack的博客 282

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

bzoj1036: [ZJOI2008]树的统计Count

题面在这里 树链裸题。。直接上代码qwq /************************************************************* Problem: bzoj 1036 [ZJOI2008]树的统计Count User: fengyuan Language: C++ Result: Accepted Time: 2388 ms Mem

juruo? juruo! 345

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

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

BZOJ1036 树的统计Count

目录 BZOJ1036 树的统计Count 题解 code BZOJ1036 树的统计Count 题目传送门 题解 一道树剖裸题,拿来练练手。。 code #include <bits/stdc++.h> using namespace std; typedef...

dieyi9889的博客 140

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

【BZOJ 1036】树的统计Count(树链剖分)

【BZOJ 1036】树的统计Count(树链剖分)1036: [ZJOI2008]树的统计CountTime Limit: 10 Sec  Memory Limit: 162 MBSubmit: 12991  Solved: 5233Description  一棵树上有n个节点,编号分别为1到n,每个节点都有一个权值w。我们将以下面的形式来要求你对这棵树完成 一些操作: I. CHANGE u t

ACMer' 1056

BZOJ 1036: [ZJOI2008]树的统计Count

二次联通门 :BZOJ 1036: [ZJOI2008]树的统计Count /* BZOJ 1036: [ZJOI2008]树的统计Count 树链剖分板子题 */ #include <cstdio> #include <iostream> #define rg register #define Max ...

weixin_30394633的博客 110

bzoj1036 [ZJOI2008]树的统计Count

bzoj1036 [ZJOI2008]树的统计Count树链剖分模板题,代码量挺大的。因为弱,所以常数大的飞起,直接T了。实在没办法卡了,无奈放弃卡常,不要脸的粘贴了一份题解。先上自己写的代码:#include&lt;cstdio&gt; #include&lt;cstring&gt; #include&lt;string&gt; #include&lt;iostream&gt; #define ...

ykhrg的博客 229

[BZOJ1036][ZJOI2008]树的统计Count 解题报告|树链剖分

树链剖分  简单来说就是数据结构在树上的应用。常用的为线段树splay等。(可现在splay还不会敲囧)   重链剖分:     将树上的边分成轻链和重链。     重边为每个节点到它子树最大的儿子的边,其余为轻边。     设(u,v)为轻边,则size(v)<=size(u)/2 (一旦大于了那必然是重边)     也就是一条路径上每增加一条轻边节点个数就会减少一半以...

weixin_30700977的博客 136

【BZOJ1036】[ZJOI2008]树的统计Count 树链剖分

【BZOJ1036】[ZJOI2008]树的统计Count Description 一棵树上有n个节点,编号分别为1到n,每个节点都有一个权值w。我们将以下面的形式来要求你对这棵树完成一些操作: I. CHANGE u t : 把结点u的权值改为t II. QMAX u v: 询问从点u到点v的路径上的节点的最大权值 III. QSUM u v: 询问从点u到点v的路径上的节点的权值和 注...

weixin_30294021的博客 74

bzoj1036【ZJOI2008】树的统计Count

树链剖分第一题

AaronPolaris 1646

【BZOJ1036】树的统计

1036: [ZJOI2008]树的统计Count Time Limit:10 SecMemory Limit:162 MBSubmit:18285Solved:7445[Submit][Status][Discuss] Description   一棵树上有n个节点,编号分别为1到n,每个节点都有一个权值w。我们将以下面的形式来要求你对这棵树完成一些操作:...

diludiliang27877的博客 171
上一篇: 关于C++ const 的全面总结
下一篇: 操作系统图解
梁千仞
博客等级 码龄15年 12粉丝 71原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值