HDU 3974 Assign the task (线段树)

高德地图轨迹回放,消息框内展示车辆速度且随车辆移动-升级支持调整速度、回放进度 使用高德地图回放车辆GPS轨迹,并添加速度和回放进度条,并支持调整,效果如下: 新增的功能: 在基础版本,有如下升级 速度条:可以拖动以调整车辆回放速度,且从当前位置继续回放 进度条:进度条表示车辆已回放的百分比,且拖动进度条车辆定位到相应的位置并继续回放 ###思路分析 高德和marker回放相关的API //主要靠他回放 moveAlong(path:Array,speed:Number,f:Function,circlable:Boolean) //点移动到另一个位置,移动进度条车辆跟随移动 阅读详情

修改一个点,实际上等价于同时修改一些点。而将一棵树深度遍历所得到的序列中,根节点相同的节点的标号刚好是相邻的。

根据这个性质,用dfs对每个节点重新编号,修改一个点就变成了修改一个连续的区间。本题就变成了区间修改单点查询的线段树问题。


代码:

#include <iostream>
#include <algorithm>
#include <cstring>
#include <cstdio>
using namespace std;
#include <vector>
#define lson l,mid,rt<<1
#define rson mid+1,r,rt<<1|1

int a[50005*4];
int add[50005*4];
bool root[50005];
int N,M;
int st[50005];
int ed[50005];
int Hs[50005];
int Num=0;
vector<int> G[50005];

void dfs(int u){
	Num++;
	Hs[u]=Num;
	st[u]=Num;
	for(int i=0;i<G[u].size();i++){
		dfs(G[u][i]);
	}
	ed[u]=Num;
}

void pushdown(int rt){
	if(add[rt]!=-1){
		add[rt<<1]=add[rt];
		add[rt<<1|1]=add[rt];
		a[rt<<1]=a[rt<<1|1]=add[rt];
		add[rt]=-1;
	}
}


void update(int L,int R,int l,int r,int rt,int n){
	pushdown(rt);
	if(L<=l&&R>=r){
		add[rt]=n;
		a[rt]=n;
		return ;
	}
	int mid=(l+r)>>1;
	if(mid>=L) update(L,R,lson,n);
	if(mid<R) update(L,R,rson,n);
}

int query(int n,int l,int r,int rt){
	pushdown(rt);
	if(l==r){
		return a[rt];
	}
	int mid=(l+r)>>1;
	if(mid>=n) return query(n,lson);
	else return query(n,rson);
}


int main(){
	int T;
	int kase=1;
	scanf("%d",&T);
	while(T--){
		memset(a,-1,sizeof(a));
		memset(add,-1,sizeof(add));
		memset(root,0,sizeof(root));
		memset(Hs,0,sizeof(Hs));
		Num=0;
		scanf("%d",&N);
		for(int i=0;i<=N;i++){
			G[i].clear();
		}
		for(int i=0;i<N-1;i++){
			int u,v;
			scanf("%d%d",&u,&v);
			G[v].push_back(u);
			root[u]=1;
		}
		for(int i=1;i<=N;i++){
			if(!root[i]){
				dfs(i);
				break;
			}
		}
		scanf("%d",&M);
		printf("Case #%d:\n",kase++);
		for(int i=0;i<M;i++){
			char ist[2];
			int x,y;
			scanf("%s",ist);
			if(ist[0]=='C'){
				scanf("%d",&x);
				printf("%d\n",query(Hs[x],1,Num,1));
			}
			else{
				scanf("%d%d",&x,&y);
				update(st[x],ed[x],1,Num,1,y);
			}
		}
	}
	return 0;
}


华为OD机考双机位C卷 - 文件存储系统的排序(Java & Python & JS & GO & C++ & C) 华为OD机考双机位C卷 - 文件存储系统的排序, 提供Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。 阅读详情

相关推荐

从脑电到脑机接口:EEG/ERP特征如何驱动你的下一个智能硬件项目(Arduino/树莓派实战)

本文详细介绍了如何利用EEG/ERP特征提取技术驱动智能硬件项目,涵盖从脑电信号采集到脑机接口实现的完整流程。通过Arduino和树莓派实战,展示了P300、N400等事件相关电位的应用,帮助开发者将学术理论转化为可编程的交互指令,适用于智能家居、医疗辅助等领域。

weixin_29279047的博客 383

HDU_3974

题意题目可以抽象为有n(n&lt;=50000)个节点的树,每个节点存储一个整数y(0&lt;=y&lt;=1e9),y的初值是-1。对某一节点x可以有一下两种操作:1、更新以x为根的子树上所有节点的y值为另一个值(覆盖原来的值);2、查询节点x当前的y值是多少。题解由于更新和询问的次数m(m&lt;=50000)和节点个数n是一个数量级,直接使用线段树的复杂度是O(n*n*logn),会超时。所...

Twxy_Spe的博客 387

随机森林文本分类

随机森林原理及代码实现 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录随机森林原理及代码实现前言一、集成算法是什么?二、随机森林是什么三、 数据预处理3.1 先来看一下我们的文本数据3.2 预处理3.3 统计评论情感值积极与消极的占比二、使用步骤参数介绍(4个)属性1.引入库2.参数调参方法总结 前言 提示:这里可以添加本文要记录的大概内容: 例如

m0_46579176的博客 5809

hdu - 3974 (dfs序 + 线段树)

普通的线段树,给出的数据是有线性顺序的,可以根据数组的顺序直接建线段树, 而此题,给的数据是树,怎么把题给的树映射到线段树上? 利用dfs序 in数组记录每个点一开始被访问的时间 out数组记录从该点开始dfs后,dfs结束的时间 #include<cstdio> #include<cstring> #include<algorithm> using name...

ChenXiLian_的博客 288

RAID 0/1/5/10 性能实测:4块 SATA SSD 组阵列,顺序读写速度对比

本文通过实测对比了RAID 0/1/5/10在4块SATA SSD上的顺序读写性能,详细展示了不同RAID级别的配置方法、理论性能与实际测试数据。测试结果显示,RAID 0在顺序读写速度上表现最佳,而RAID 10则在性能与数据安全之间取得了平衡,适合数据库服务器等关键应用场景。

weixin_33462167的博客 425

Innovus快捷键大全:从入门到精通的效率提升指南

本文是Innovus快捷键从入门到精通的效率提升指南,旨在帮助芯片后端设计工程师通过掌握核心快捷键,将重复性鼠标操作转化为高效的肌肉记忆,从而显著提升版图设计、编辑和分析的工作流速度。文章系统讲解了视图导航、对象选择编辑、流程管理等关键快捷键组合,并提供了个性化配置与实战策略,助力工程师突破效率瓶颈,实现人机合一的流畅设计体验。

silver的专栏 797

hdu3974——dfs序+线段树

题目链接:https://vjudge.net/problem/HDU-3974#author=dawn_LL Description 有一家公司有N个员工(从1到N),公司里每个员工都有一个直接的老板(除了整个公司的领导)。如果你是某人的直接老板,那个人就是你的下属,他的所有下属也都是你的下属。如果你是没有人的老板,那么你就没有下属,没有直接老板的员工就是整个公司的领导,也就是说N个员...

mumei的博客 506

从理论到板级:FOC电机驱动硬件电路全链路设计解析

本文从硬件工程师视角,深度解析FOC电机驱动从理论到板级实现的全链路设计。重点剖析了电源保护、核心采样电路、三相逆变桥与驱动电路等关键硬件模块的设计要点与实战经验,强调硬件是FOC算法可靠运行的基石,并提供了PCB布局布线的核心原则,帮助开发者构建高性能、高可靠性的电机驱动硬件平台。

weixin_29240711的博客 333

HDU 3974 Assign the task (并查集改编)

链接:http://acm.hdu.edu.cn/showproblem.php?pid=3974   这道题目的意思是这样的: 给你一个N,说明有N个人 然后接下来N行是这些人的关系 两个数字表示后者是前者的boss 然后再给你一个M,说明下面有M种情形 遇到C,你就要输出当前C后面跟着的那个号数的经理当前在做的任务。 遇到T,例如:T 2 1,你就要把任务1给2经理,而且,他的

L_oser的专栏 1509

新政下的绿电直连项目经济性分析:模式创新与价值重构

随着全球气候治理与低碳转型进程不断加速,绿电直连作为新能源就近消纳的创新模式,正成为破解新能源消纳瓶颈、规避碳关税壁垒的核心路径。2025年9月,国家发展改革委、国家能源局发布《关于完善价格机制促进新能源发电就近消纳的通知》(1192号文),为绿电直连项目的经济性分析与效益测算提供了明确的政策依据。本文将基于新政框架,深入解析绿电直连项目的经济性影响因素、盈利模式与优化路径,并结合案例与量化模型,为项目投资决策提供系统参考。

getusushu的博客 141

博途S7-1500T 使用工艺对象驱动液压轴(含SimaHydTO库)

利用工艺对象控制液压轴位置含PLC控制和仿真程序文档资料下载地址如下:液压比例伺服阀的相关应用知识请参看下面的博客文章:液压位置闭环控制(比例伺服阀应用)_RXXW_Dor的博客-优快云博客。

RXXW_Dor的博客 2900

杭电HDU 3974Assign the task dfs出父包子的数组->知道管辖范围,线段树

dfs构建父在两端包围子的数组

JK01WYX的博客 540

将Windbg附加到软件进程上排查异常闪退的问题

使用Windbg和Process Explorer排查因为内存泄漏导致的软件异常闪退问题。

dvlinker的技术专栏 1万+

hdu 3974 Assign the task(线段树)

题目链接http://acm.hdu.edu.cn/showproblem.php?pid=3974 题意:给定一棵树,50000个节点,50000个操作,C x表示查询x节点的值,T x y表示更新x节点及其子节点的值为y 大致把边存一下那一棵树来举例子     2   3    5 4    1 例如像这样的一棵树,可以将2->1,3->2,4->3...

awow80285的博客 144

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

hdu3974 Assign the task【线段树】

There is a company that has N employees(numbered from 1 to N),every employee in the company has a immediate boss (except for the leader of whole company).If you are the immediate boss of someone,that ...

wybooooooooo的博客 223

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

HDU 3974 Assign the task(线段树)

#include #include #include #include #include #include #include #include #include #include #define ll long long using namespace std; const int MAXN = 50000 + 10; struct Edge { int to, nex

蘑菇--走在通往梦想的道路上。 690

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

线段树之HDU3974 Assign the task

这一题,第一眼看就觉得是线段树,成段替换的。可是很久都想不到怎么去做,因为我们平时更新的区间都是连续的一段区间,而这题给你的是一棵树,没法把他们连成段。 然而大神和渣渣的区别就在这里了,后来参考别人的代码才发现,原来可以用dfs处理,将这棵树映射到线段树中。dfs处理时候,可以将该节点的所有子节点都统统放在一块(用标记记录每个遍历到的次序)。只要会dfs处理,其他的就很简单了。 #includ

htw 465

hdu 3974 Assign the task (线段树)

错误总结: 这一题没有1A,主要原因是有点累,在敲代码的过程中注意力有些无法集中起来。 最后导致在调用函数的地方传参数传错了!!!检查的时候只把函数认真看了一遍,而调用函数的地方却漏看了!!!!以后要注意!   题目大意: 给一个有根数,然后有以下两种操作。 操作一:T X Y ,将以X为根的子树上的所有节点都变成Y 操作二:C X,查询第X号点是多少?   这一题初看是一道维护

u010598215的专栏 547

HDU 3974 Assign the task——线段树

题意:有一个公司,有n个人,这些人之间的关系是一棵树,公司会安排一些任务给他们, 每次安排至安排一个人,但是他的下属会和他一起做,要求查询当前这个人在做什么工作 思路:一开始不好往线段树那里想,想用线段树的lazy思想直接处理原来的树,但发现更新和查询都没法精确定位,最坏的情况为O(n),会超时,所以考虑如何在更短的时间内更新和查询,这就想到了线段树,可以在O(nlogn)内完成更新和查询 想

hao_zong_yin的博客 567

Assign the task( HDU - 3974,DFS + 线段树)

一.题目链接: HDU-3974 二.题目大意: 一个整数 n ,表示有 n 位员工. 之后 n - 1 行,给出员工 u 与 员工 v 之间的隶属关系. 有 2 种 m 次操作 C x:查询员工 x 当前的所做任务. T x y:将员工 x 的当前任务改为 y. 当员工 x 做任务 y 时,员工 x 的员工也会同时做任务 y,以及员工 x 的员工的员工。。。 三.分析: 想要...

The___Flash的博客 231

HDU 3974 Assign the task(DFS建树+线段树)

HDU 3974 Assign the taskThere is a company that has N employees(numbered from 1 to N),every employee in the company has a immediate boss (except for the leader of whole company).If you are the immedia...

GYH0730的博客 416

hdu3974-Assign the task(dfs序建线段树)

title: hdu3974-Assign the task(dfs序建线段树) date: 2019-05-28 15:08:01 categories: ACM tags: [ACM,算法] 今天做线段树的题碰到一个需要dfs序转化成建线段树,挺有意义的一道题 我的个人博客:https://www.kimiye.xyz 题目描述 There is a company that has ...

Flyyy‘s blog 460

HDU - 3974 Assign the task(线段树 区间修改)

题目大意:给你一棵树,刚开始每个节点都是-1,有两种操作 C x:查询x这个结点 T x c:将x和x的所有子孙结点都变成c解题思路:dfs一下,找出每个点所管辖的区域(x和其所有子孙结点),这样就可以将点映射到区间了#include <cstdio> #include <cstring> const int N = 50010; const int M = 50010 << 2;struct

静静地码 670

Assign the task HDU - 3974 dfs序 +线段树

一、内容 There is a company that has N employees(numbered from 1 to N),every employee in the company has a immediate boss (except for the leader of whole company).If you are the immediate boss of someone...

Tizzi的博客 1068

HDU - 3974 Assign the task (线段树 + dfs序)

HDU - 3974 题意:有个公司有一些关系,每个人(除了boss)都有且仅有一个上司,这就是一棵树的关系,然后会有一些操作,C i,询问第i个人现在的任务,T x y,把y任务给x, 给x相当于给x及他所有的下属,新任务会覆盖旧任务 思路:这是我写的第一个(除了联通图那些)需要用dfs序的题,最近有毒,wa到不敢相信自己.... 因为i节点的子树在dfs访问序列中肯定是连续的,所以可以把

shinimashzi 368

F - Assign the task HDU - 3974(dfs序线段树)

F - Assign the taskHDU - 3974 dfs序线段树 把树形结构变成线性区间结构,树的向下传值变成了这个节点能覆盖的区间的修改。 线段树代码是真的难调,一点小bug就是找不出来,卡了两天。 1 #include <iostream> 2 #include <cstring> 3 4 using names...

dieche3140的博客 163
上一篇: POJ 1141 Brackets Sequence (区间DP)
下一篇: POJ 3013 Big Christmas Tree (SPFA最短路)
Baoli1008
博客等级 码龄12年 70粉丝 293原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值