hdu5692 线段树+DFS序

hdu5692(dfs序+线段树 )Snacks Snacks Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 3022    Accepted Submission(s): 703 Problem Description 百度科技园内有n个零食机,零食机之间通 阅读详情

题意:

中文题

思路:

维护DFS序,得到点i的时间戳le[i],跟子树最大时间戳re[i],由于DFS序le[i]跟re[i]必定连续

线段树维护每个点到根节点的路径最大值,叶子节点代表路径的值

修改就是修改le[i]~re[i]的值,查询就是查询最大值

WA点:long long, 线段树更新了,但是点值忘记更新了,线段树数组开小,inf开太小

2286ms
#include<iostream>
#include<stdio.h>
#include<string.h>
#include<algorithm>
#define ll long long
#define lc o<<1
#define rc o<<1|1
#pragma comment(linker, "/STACK:1024000000,1024000000") 
using namespace std;
const int maxn=1e5+5; 
const ll inf=2000000000000000000;
int head[maxn];int nxt[2*maxn];int to[2*maxn];
int le[maxn];int re[maxn]; int rnk[maxn];ll path[maxn];
ll lazy[maxn*4];ll val[maxn*4];ll a[maxn];
int cnt=0,idx=0;
void add(int u,int v){cnt++;nxt[cnt]=head[u];head[u]=cnt;to[cnt]=v;}
void init(){cnt=idx=0;memset(head,-1,sizeof(head));memset(path,0,sizeof(path));}
void dfs(int u,int p)
{
	le[u]=re[u]=++idx;rnk[idx]=u;
	path[u]=path[p]+1ll*a[u];
	for(int i=head[u];i!=-1;i=nxt[i])
	{
		int v=to[i];
		if(v==p)continue;
		dfs(v,u);
		re[u]=max(re[u],re[v]);
	}
}
void pushup(int o){	val[o]=max(val[lc],val[rc]);}
void pushdown(int o)
{
	if(lazy[o]!=0)
	{
		val[lc]+=1ll*lazy[o];
		val[rc]+=1ll*lazy[o];
		lazy[lc]+=lazy[o];
		lazy[rc]+=lazy[o];
		lazy[o]=0;
	}
}
void build(int o,int L,int R)
{
	if(L==R)
	{
		val[o]=path[rnk[L]];
		return ;
	}
	val[o]=-inf;
	lazy[o]=0;
	int m=(L+R)>>1;
	build(lc,L,m);build(rc,m+1,R);
	pushup(o);
}
void update(int o,int L,int R,int ql,int qr,int addval)
{
	if(ql<=L&&qr>=R)
	{
		val[o]+=1ll*addval;
		lazy[o]+=addval;
		return ;
	}
	int m=(L+R)>>1;
	pushdown(o);
	if(ql<=m)update(lc,L,m,ql,qr,addval);
	if(qr>m) update(rc,m+1,R,ql,qr,addval);
	pushup(o);
}
ll query(int o,int L,int R,int ql,int qr)
{
	if(ql<=L&&qr>=R)
		return val[o];
	int m=(L+R)>>1;
	pushdown(o);
	ll ans=-inf;
	if(ql<=m)ans=max(ans,query(lc,L,m,ql,qr));
	if(qr>m) ans=max(ans,query(rc,m+1,R,ql,qr));
	return ans;
}
int main()
{
	int T;int kase=0;
	scanf("%d",&T);
	while(T--)
	{
		int n,q;int u,v;
		scanf("%d %d",&n,&q);init();
		for(int i=1;i<n;i++)
		{
			scanf("%d %d",&u,&v);u++,v++;
			add(u,v);add(v,u);
		}
		for(int i=1;i<=n;i++)scanf("%I64d",&a[i]);
		dfs(1,0);build(1,1,n);
		//for(int i=1;i<=n;i++)	printf("i=%d le=%d re=%d path=%d\n ",i,le[i],re[i],path[i]);
		int type=0;ll x,y;
		printf("Case #%d:\n",++kase);
		for(int i=1;i<=q;i++)
		{
			scanf("%d",&type);
			if(type==0)
			{
				scanf("%I64d %I64d",&x,&y);
				x++;
				update(1,1,n,le[x],re[x],y-a[x]);
				a[x]=y;
			}
			if(type==1)
			{
				scanf("%I64d",&x);x++;
				printf("%I64d\n",query(1,1,n,le[x],re[x]));
			}
		}
	}
}

process插件_利用SPSS 插件MLmed检验多水平中介的调节模型 本文介绍一个SPSS插件,用于检验多水平中介的调节,及该方法与Mplus的比较。1 Mlmed 简介及安装Mlmed 简介: Mlmed 由Rockwood 2017年开发,基于SPSS插件计算Multilevel moderated mediation. 可以提供multilevel mediation Monte Carlo 置信区间比如(模拟20000次),以及多水平调节的... 阅读详情

相关推荐

从零构建无线AM信号模拟系统:基于STM32与AD9959的国赛一等奖方案解析

本文详细解析了基于STM32F103RCT6与AD9959芯片构建无线AM信号模拟系统的国赛一等奖方案。文章从项目背景、核心芯片选型出发,深入剖析了系统架构、硬件电路设计及软件控制逻辑,重点分享了“直流偏置叠加法”实现AM调制、多径模拟以及高频电路调试的实战经验与避坑指南,为参加全国大学生电子设计大赛的选手提供了一套完整、可靠的复现路径。

weixin_29182481的博客 181

HDU 5692 Snacks 好题:dfs序+线段树维护区间最值

题目链接:Snacks 最近想学树链剖分,但无奈,前置技能还不会,dfs序还没搞懂是什么玩意,就上B站学习了一波,无奈太菜了,也没听太懂,就了解了个大概,想着去刷道题,练一练,这不,找到了这道 HDU 2692 Snacks,这题真的是好题,费了我不少时间,才搞定, 可能是在家效率太低,可能最近对头发的保养很重视,一天到晚坐在电脑面前学习对目前的我来说是不太可能了。 WA了20来发: 上干...

yangzijiangac的博客 1030

主流 AI 插件 之一的 Copilot 介绍

Copilot 是微软推出的一款人工智能助手,旨在通过自然语言交互帮助您提升工作效率和创造力,覆盖多平台,提供智能问答、内容生成、代码辅助等功能。其核心定位为“日常 AI 伴侣”,旨在通过自然语言交互提升工作与生活效率。

u014695938的博客 6881

HDU-5692 Snacks(dfs序+线段树)

题意 一棵 nnn 个节点的树,每个点有点权。在线实现 mmm 个操作,操作分两种:改变某点的点权,询问以 111 为节点,必须经过节点 xxx 的路径中点权和的最大值。 1≤n,m≤1000001≤n,m≤1000001 \leq n,m \leq 100000 思路 树上维护的东西一般跟询问有关,这里就按照题意,维护从 111 出发到某个节点的点权和,而经过 xxx 的路径,说明路径的...

Paulliant的博客 427

【以太网硬件一】802.3xx标准怎么这么多?它们有什么关系?

IEEE 802.3标准发展历史简介

highman110的博客 5017

基于YOLO26深度学习框架的智能停车场管理系统的算法研究实现方法

本文研究了基于YOLO26深度学习框架的智能停车场管理系统实现方法。系统采用CSPDarknet53作为主干网络,结合特征金字塔和注意力机制提升检测性能。通过数据预处理、模型训练和停车分析三个主要模块,实现了车位占用检测、车辆类型识别等功能。实验结果表明,该方法在检测精度和速度方面表现优异,为智能停车场管理提供了有效的技术解决方案。

一键难忘的博客 571

hdu 5692(dfs+线段树) Snacks

题目http://acm.hdu.edu.cn/showproblem.php?pid=5692 题目说每个点至多经过一次,那么就是只能一条路线走到底的意思,看到这题的格式, 多个询问多个更新, 自然而然的就会想到线段树或者树状数组,在建树前先做处理, 用DFS将从起点0出发到任一点的距离求出, 然后将这些节点按照一条一条完整的路线的顺序建到树中, 比如样例是1---2---3...

weixin_30346033的博客 153

【Unity 实用工具篇】 | Book Page Curl 快速实现翻书效果

游戏和应用开发中,真实感的交互设计能显著提升用户体验。Unity3D图书翻页效果插件为开发者提供了一种便捷方式,可在项目中实现高度拟真的书籍翻页动画。 本文介绍该插件的快速使用方法,涵盖从基础导入到自动翻页效果创建的全过程,让我们快速实现翻页效果。

努力前行,总会成为自己心中的那道光 1万+

hdu 5692 snacks

http://www.elijahqi.win/archives/1119 百度科技园内有 n n 个零食机,零食机之间通过 n−1 n−1 条路相互连通。每个零食机都有一个值 v v ,表示为小度熊提供零食的价值。 由于零食被频繁的消耗和补充,零食机的价值 v v 会时常发生变化。小度熊只能从编号为0的零食机出发,并且每个零食机至多经过一次。另外,小度熊会对某个零食机...

Elijahqi 275

WPF vs Avalonia: 跨入C#桌面应用现代化的大门

请注意,这只是一个目录,详细内容将根据这个结构逐步展开。如果您需要某个特定部分的详细内容,请告知我,我将为您提供深入的解析和示例代码。WPF,全称Windows Presentation Foundation,是微软为Windows平台量身打造的UI框架。自2006年发布以来,它就像一位经验丰富的老船长,引领着桌面应用的航船在技术的海洋中乘风破浪。Avalonia,一个新兴的跨平台UI框架,它像一位年轻的探险家,勇敢地探索着桌面应用的新世界。

java专栏 2398

我写了一个自动识别火车车厢位置的算法【lidar点云识别】

我写了一个自动识别火车车厢位置的算法【lidar点云识别】

qq_43212290的博客 797

HDU5692(dfs + 线段树)

题解:是个好题,对于经过某一点的最大值,可以将某一点作为根,他的子树中到0的最大值即为解。那么这样,可以用dfs跑出一个序,即当前点到0的值,每个点维护一个L,R区间,那么这个区间的点就是它的子树。对于单点更新一个值,那么就变成区间更新,更新这个点L,R区间所以点的值,对于查询,就是L,R区间中的最大值 (注意LL和INF) #include &lt;iostream&gt; #include...

yxmGo 307

AUTOSAR从入门到精通-复杂设备驱动(CDD)

CDD是复杂设备驱动的首字母缩写主要为驱动程序或复杂驱动程序,但不限于驱动程序。复杂驱动程序是一种未被AUTOSAR标准化的软件实体,可以通过AUTOSAR接口和/或基本软件模块api访问。 CDD是位于基础软件复杂驱动层的特定模块,与标准BSW模块或Rte交互。 CDD可能需要与分层软件体系结构的模块连接 分层软件架构的模块可能需要连接到CDD CDD可能需要通过Rte连接swc。

getusushu的博客 4192

hdu 5692 Snacks(dfs序+线段树)

Snacks Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 1665    Accepted Submission(s): 405 Problem Description 百度科技园内有n个零食机,零食机之间通

TUT我好菜啊 629

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

lwip-2.0.3

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

HDU5692:DFS序+线段树

HDU5692:Snacks Time Limit: 10000/5000 MS (Java/Others)Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 5756Accepted Submission(s): 1306 Problem Description 百度科技园内有n个零食机,零食机之间通...

FlyingJack 283

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

hdu5692【dfs序】【线段树】

SnacksTime Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 4446    Accepted Submission(s): 980Problem Description百度科技园内有n个零食机,零食机之间通过n−1条路相互连通。每个零食机...

wybooooooooo的博客 270

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

HDU.5692 Snacks ( DFS序 线段树维护最大值 )

HDU.5692 Snacks ( DFS序 线段树维护最大值 )题意分析给出一颗树,节点标号为0-n,每个节点有一定权值,并且规定0号为根节点。有两种操作:操作一为询问,给出一个节点x,求从0号节点开始到x节点,所能经过的路径的权值最大为多少;操作二为修改,给出一个节点x和值val,将x的权值改为val. 可以看出是树上修改问题。考虑的解题方式有DFS序+线段树,树链剖分,CXTree。由于后两

Pengwill's Blog 393

HDU 5692 Snacks【线段树+DFS序】

百度科技园内有nn个零食机,零食机之间通过n−1n−1条路相互连通。每个零食机都有一个值vv,表示为小度熊提供零食的价值。 由于零食被频繁的消耗和补充,零食机的价值vv会时常发生变化。小度熊只能从编号为0的零食机出发,并且每个零食机至多经过一次。另外,小度熊会对某个零食机的零食有所偏爱,要求路线上必须有那个零食机。 为小度熊规划一个路线,使得路线上的价值总和最大。 Input 输入数据第一行是...

独钓门前月 408

[dfs序][线段树][模板]hdu5692 Snacks

Snacks Time Limit: 10000/5000 MS(Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 705    Accepted Submission(s):151 Problem Description 百度科技园内有n个零食机,零食机之间通过n−1条路相互连

Freddddd 479

HDOJ5692解题报告【dfs序+线段树】

题目地址:   http://acm.hdu.edu.cn/showproblem.php?pid=5692 题目概述:   中文题面就不赘述了。 大致思路:   这个题给出的是一棵树,我们可以使用dfs序将这棵树处理成一条链,然后对这条链来进行信息维护和查询。   有两种操作,0 x是询问从0出发(题目保证0为树根)经过x的路径中的最大权值,1 x y是将点x的权值修改成y,这时我们...

weixin_30378623的博客 131

HDU - 5692 Snacks(dfs序+线段树)

题目链接:点击查看 题目大意:中文题目,不多赘述 题目分析:因为要求路线上权值和最大,我们可以用前缀和的思想来储存,故我们需要来维护最大值,可以用线段树来维护最大值,若想用线段树的话,前提必须是线性区间,所以我们将树用dfs序转换成线性区间,然后就可以用线段树来维护最大值了。 注意,这个题有个坑点,因为最大值已经爆int了,所以inf要设成1e18,因为这个调了一整天。。。自闭 上代码吧,...

Falcon的博客 547

HDU5692 Snacks DFS序 线段树

去博客园看该题解 题目 HDU5692 Snacks Problem Description 百度科技园内有n个零食机,零食机之间通过n−1条路相互连通。每个零食机都有一个值v,表示为小度熊提供零食的价值。 由于零食被频繁的消耗和补充,零食机的价值v会时常发生变化。小度熊只能从编号为0的零食机出发,并且每个零食机至多经过一次。另外,小度熊会对某个零食机的零食有所偏爱,要求路线上必须有那个...

weixin_30750335的博客 207

HDU - 5692 Snacks 线段树+dfs序

题目链接:点击查看 百度科技园内有n个零食机,零食机之间通过n−1条路相互连通。每个零食机都有一个值v,表示为小度熊提供零食的价值。 由于零食被频繁的消耗和补充,零食机的价值v 会时常发生变化。小度熊只能从编号为0的零食机出发,并且每个零食机至多经过一次。另外,小度熊会对某个零食机的零食有所偏爱,要求路线上必须有那个零食机。 为小度熊规划一个路线,使得路线上的价值总和最大。 Input 输...

还我笑颜 186

HDU5692 Snacks 树上DFS序+线段树

HDU5692 Snacks 无向图 G = (Vn,En-1)构成一棵树,因此根节点O到树上各个节点的路径唯一,用线段树维护各个节点到O节点的权值之和(称为x的前缀和),每个节点的权值变化影响它和它子树的前缀和。 DFS先序遍历初始化各点的前缀和并储存在线段树中,对于每个节点x的变化,更新x和x子树的前缀和。(DFS先序遍历序列中属于同一子树的节点在连续区间中) DFS序可以有效处理子树变...

Qianyri的博客 278

hdu 5692 (dfs序+线段树)

Snacks Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 1732    Accepted Submission(s): 421 Problem Description 百度科技园内有n个零食机,零食机之间通过n−1

lovemejj的博客 363

【HDU 5692 Snacks】线段树+dfs序

hdu5692 首先这题做了 上一个树链剖分完全就可以谢dfs序了 因为他从根开始就不用树链剖分了 上题还写了树链剖分 傻了 白给少年ljq /* if you can't see the repay Why not just work step by step rubbish is relaxed to ljq */ #include <cstdio>...

我是谁 --- 卡比兽 164
上一篇: BZOJ1042 DP+容斥
下一篇: 斜率DP题目小结
animalcoder
博客等级 码龄9年 43粉丝 150原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值