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

YOLOv11改进 ,YOLOv11改进主干网络为MobileNetV3,助力涨点 MobileNetV3通过结合硬件感知网络架构搜索(NAS)和NetAdapt算法,通过新颖的架构改进进一步提升了性能。本文开始探讨了自动化搜索算法与网络设计如何协同工作,以利用互补方法来提升整体技术水平。通过这一过程,创建了两个新的MobileNet模型:MobileNetV3-Large和MobileNetV3-Small,分别针对高资源和低资源使用场景。这些模型随后被适配并应用于目标检测和语义分割任务。 阅读详情

相关推荐

Ubuntu系统下USB无线网卡无法识别的解决方案

Realtek的USB设备可能是无线网卡、有线网卡、读卡器等,系统仅知道“这是Realtek的USB设备”,但不知道“如何将其作为无线网卡驱动”。通过以上步骤,RTL8812AU 芯片的 Edimax 无线网卡应能被 Ubuntu 识别并正常工作。Realtek等品牌的无线网卡可能被系统简单识别为"USB设备",但未匹配到对应的无线驱动,导致设备无法发挥网络功能。是系统识别了USB设备,却未正确加载无线网卡驱动。(前4位是厂商ID,后4位是产品ID),显示设备已识别,但网络管理工具无反应,

极地星辰 3462

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

ClickHouse的bitmap使用

ClickHouse的bitmap使用 bitmap的基本使用 在CK中bitmap有两种构建方式,在ClickHouse的官网有说明: (1)一个是由聚合函数groupBitmapState构造的, (2)另一个是由Array Object构造的。同时还可以将位图对象转化为数组对象。 bitmap实战 数据和基本数据表准备 创建一张基本表,一个用户表,有多个描述的维度,每个维度由该维度的唯一id。 CREATE TABLE test02(id UInt16, tag1 UInt8, tag2 UInt8,

zg_hover的专栏 5654

洛谷——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

光学薄膜设计入门:Essential Macleod中文版从安装到实战全攻略

本文为光学薄膜设计初学者提供Essential Macleod软件从安装部署到实战应用的全流程中文指南。详细解析了软件核心界面、材料管理及工作流程,并通过一个完整的宽带增透膜设计实例,手把手演示膜系构建、优化与分析方法,帮助用户快速掌握这一业界标杆工具,跨越理论与实操的门槛。

weixin_29309475的博客 983

中国知网文献引用导入EndNote9.X,Web of science导入endnote以及谷歌学术导入endnote图文详解,全网最细版本适用EndNote9.x,Endnote20版本

在科研中用到EndNote管理文献,遇到插入文献时,中国知网如何将参考文献导进Endnote9.x或者web of sicence,谷歌学术如何将文章,文献导入进文献管理软件EndNote的详细图文2022版本解释,全网最细的笔记教程,值得大家参考收藏学习

sakura的博客 5175

【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

若依框架二次开发——若依 Vue3 版本前端样式优化指南

若依框架二次开发——若依 Vue3 版本前端样式优化指南

bjzhang75的博客 1692

树链剖分+线段树

树链剖分 一树上有 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

17. ADC开发

bes2700 支持2路ADC。

雪飞_海 342

通过WorkVisual连接KUKA机器人的具体方法

通过WorkVisual连接KUKA机器人的具体方法

Robot_PLC_HMI_Automation 6843

【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

CryoEM - 使用 ChimeraX 工具 操作 冷冻电镜的 MRC 密度图(Density Map) 教程

由冷冻电镜 CryoSparc 软件所生成的 Volume,需要观察其内部结构,建议使用 ChimeraX 进行操作。

AGI 4960

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

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

bzoj1036: [ZJOI2008]树的统计Count

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

juruo? juruo! 345

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

BZOJ1036 树的统计Count

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

dieyi9889的博客 140

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

【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、付费专栏及课程。

余额充值