HDU4348 To the moon

HDU 4348. To the Moon【可持久化树状数组】 http://acm.hdu.edu.cn/showproblem.php?pid=4348 #include #include #include #include #include #include using namespace std; const int maxn = 100010; int n, m; struct Node { long long d, 阅读详情

题目大意:给你n个数,开始时间为0,按照操作输出

给你四种操作:

1、C l r d :  在(l,r)区间都加上d,++时间戳

2、Q l r :  询问现在(l,r)的区间和

3、H l r t :  询问在t时间的(l,r)的区间和

4、B t : 直接回到t的时间

主席树维护区间标记,标记永久化来写。pushdown的话会多开许多节点,很难受。

记住一句话:更新节点要新开节点维护,而我们想要做的就是通过共用节点,达到减少内存的目的。

 

ps:今天集训队大佬的一套题直接把我搞蒙圈,三道数数题= =让我深刻意识到了数据结构是没有前途的。。。

估计这段时间要开始被数论虐了~ ~

#include<bits/stdc++.h>
using namespace std;
const int Maxn=100005;
int n,m,a[Maxn];
int cnt,root[Maxn];
struct SegMent{
	struct tree{
		int l,r,ls,rs;
		long long sum,tag;
	}t[Maxn*20];
	#define maintain(x) t[x].sum=t[t[x].ls].sum+t[t[x].rs].sum
	void build(int &x,int l,int r){
		t[x=++cnt]=(tree){l,r,0,0,0};
		if(l==r)return t[x].sum=a[l],void();
		int mid=l+r>>1;
		build(t[x].ls,l,mid),build(t[x].rs,mid+1,r);
		maintain(x);
	}
	void add(int &x,int o,int l,int r,int k){
		if(t[o].l>r||t[o].r<l)return ;
		t[x=++cnt]=t[o];
		if(l<=t[x].l&&t[x].r<=r){
			t[x].sum+=1ll*k*(t[x].r-t[x].l+1);
			t[x].tag+=k;
			return ;
		}
		if(t[x].l<=l&&l<=t[x].r&&t[x].r<=r){
			t[x].sum+=1ll*k*(t[x].r-l+1);
		}else if(l<=t[x].l&&t[x].l<=r&&r<=t[x].r){
			t[x].sum+=1ll*k*(r-t[x].l+1);
		}else {
			t[x].sum+=1ll*k*(r-l+1);
		}
		add(t[x].ls,t[o].ls,l,r,k),add(t[x].rs,t[o].rs,l,r,k);
	}
	long long query(int x,int l,int r,int tag){
		if(t[x].l>r||t[x].r<l)return 0;
		if(l<=t[x].l&&t[x].r<=r)
			return 1ll*t[x].sum+1ll*tag*(t[x].r-t[x].l+1);
		return query(t[x].ls,l,r,tag+t[x].tag)+query(t[x].rs,l,r,tag+t[x].tag);
	}
}seg;
int main(){
//	cout<<sizeof(seg.t)/1024/1024;
	while(scanf("%d%d",&n,&m)!=EOF){
		for(int i=1;i<=n;++i)scanf("%d",&a[i]);
		memset(seg.t,0,sizeof(seg.t));
		cnt=0;seg.build(root[0],1,n);
		int cur=0;
		for(int i=1;i<=m;++i){
			char c=getchar();while(!isalpha(c))c=getchar();
			if(c=='C'){
				++cur;int a,b,d;scanf("%d%d%d",&a,&b,&d);
				seg.add(root[cur],root[cur-1],a,b,d);
			}else if(c=='Q'){
				int l,r;scanf("%d%d",&l,&r);
				cout<<seg.query(root[cur],l,r,0)<<'\n';
			}else if(c=='H'){
				int l,r,t;scanf("%d%d%d",&l,&r,&t);
				cout<<seg.query(root[t],l,r,0)<<'\n';
			}else {
				scanf("%d",&cur);
				cnt=root[cur+1]-1;
			}
		}
	}
	return 0;
}

 

不用写触发器!帆软填报报表自动记录创建/修改时间的终极方案 本文详细介绍了帆软填报报表中无需编写数据库触发器,即可自动记录数据创建时间和修改时间的终极方案。该方案利用帆软内置函数和单元格条件属性,在应用层实现日期自动生成,有效规避了触发器带来的权限、维护和部署难题,为数据填报提供了更轻量、灵活且易于维护的解决方案。 阅读详情

相关推荐

基于LORA的双机通信的智能农业系统

通过LoRa模块与主机进行通信,监测环境中的温度、湿度、土壤湿度和光照强度等参数,并根据预设的自动控制逻辑或者手动指令控制继电器开关,从而调节风扇、加热器、水泵、喷雾器和灯光等设备,为植物提供适宜的生长环境。使用的Lora是大夏龙雀的感觉这个是我使用过的Lora里面最好用的,因为不用设置频道就可以直接透明传输,使用起来得心应手。就像两个单片机直接串口通信一样,缺点是异步串行,不能同时进行接收和发送。继电器灯亮模拟打开对应的风扇、水泵、灯、喷雾、加热。1.使用温度传感器测当前环境的温湿度。

ssjsjss的博客 1739

hdu4348 To the moon (主席树 || 离线线段树)

Problem Description Background To The Moon is a independent game released in November 2011, it is a role-playing adventure game powered by RPG Maker. The premise of To The Moon is based around a

新月 1114

STM32----SPI+DMA高效读写外部Flash的配置与实战

本文详细介绍了STM32通过SPI+DMA高效读写外部Flash的配置与实战方法。针对大量数据传输场景,使用DMA技术可显著提升系统效率,释放CPU资源。文章包含完整的代码实现、常见问题调试技巧以及性能优化建议,帮助开发者快速掌握这一关键技术。

pea55的博客 1030

HDU 4348 To the moon

题目要求有一下几个操作:区间加个数(此时时间计数+1),查询区间和,查询历史区间和,时间回退到过去某个时间。 可持久化线段树,用T[i]表示时间为i的时候的树根; 由于整一个更新只有单一的加法,所以我们不必利用lazy标记,我们用一个标记来记录当前节点的整段区间被累加了多少,当询问的时候我们在从根节点走到目标结点的过程中不断累加所经过节点上的标记值,这样就提高了每棵树的共享信息 #i

Mr_Xujh的博客 679

基于Android13的系统启动流程分析(三)之FirstStageMain阶段

init进程是Android系统中用户空间的第一个进程,作为第一个进程,它被赋予了很多极其重要的工作职责,比如创建zygote(孵化器)和属性服务等。init进程是由多个源文件共同组成的,这些文件位于源码目录system/core/init1. Bootloader 引导当按下设备电源键时,最先运行的就是 bootloader(固化在ROM的程序),bootloader 的主要作用就是硬件设备(如 CPU、flash、内存)的初始化并加载到RAM,通过建立内存空间映射,为装载 Linux 内核做好准备,。

q1210249579的博客 5496

附录B:Standard Delay Format(SDF)(上)

本附录将介绍标准延迟标注格式,并说明了如何在仿真中执行反标。 延迟格式描述了设计网表的单元延迟和互连走线延迟,无论设计是用两种主要硬件描述语言(VHDL或Verilog HDL)中的哪一种所描述的。 本章还会介绍仿真的反标(backannotation),STA的反标其实是一个简单直接的过程,其中DUA中的时序弧将由SDF所指定的延迟进行标注。

To the beyond and infinity! 5410

HDU - 4348 To the moon (主席树)

To the moon Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 6186    Accepted Submission(s): 1421 Problem Description Background To

HHH_go_的博客 541

[工具使用]黑暗引擎FOFA

黑暗引擎FOFAFOFA(点我进入)逻辑运算符搜索子域名domain搜索指定内容的host全部域名bodycert搜索选定应用的网站搜索指定开放端口的IP搜索指定协议的IP搜索IP或者网段的信息搜索指定CSS/JS网站常用的一些内容其他 FOFA(点我进入) 官网这样描述:FOFA是白帽汇推出的一款网络空间资产搜索引擎。它能够帮助用户迅速进行网络资产匹配、加快后续工作进程。例如进行漏洞影响范围分析、应用分布统计、应用流行度排名统计等。 简单理解就是,一个本土加强版shodan,知道某产品在互联网的部署情况、

网络安全知识分享 3万+

Hdu4348_To the moon(主席树)

题意: 一个长度为n的数组,4种操作 : (1)C l r d:区间[l,r]中的数都加1,同时当前的时间戳加1 。 (2)Q l r:查询当前时间戳区间[l,r]中所有数的和 。 (3)H l r t:查询时间戳t区间[l,r]的和 。 (4)B t:将当前时间戳置为t 。 思路: 对于每一次区间加法都新建节点建一棵线段树,加法不用向下更新,懒惰标记最后加上就行了,查询的话就是某个根节点的线段树...

CY05627的博客 316

海康视觉脚本开发全流程解析

本文详细解析了海康机器视觉平台(VM)中脚本模块的开发全流程。从创建第一个脚本模块入手,深入讲解了输入参数、输出参数与内部变量的定义与区别,并提供了C#脚本编写、公用函数调用、代码结构组织以及编译调试的实用指南。旨在帮助开发者掌握海康视觉脚本开发的核心技巧,高效实现复杂的自定义视觉逻辑处理。

beer8的博客 600

Simulink开发项1000例实战专栏--实例148:构建一个完整的电动汽车电池SOH评估仿真模型,包括电池建模模块、数据采集模块、SOH估算算法模块以及性能评估模块

电动汽车的动力电池是其核心部件,而电池的健康状态(State of Health, SOH)直接影响车辆的续航能力和使用寿命。SOH通常定义为当前电池容量与初始容量的比值,用百分比表示。通过基于MATLAB/Simulink平台的SOH评估仿真,可以实时监测电池的退化情况,并为电池管理系统(BMS)提供决策依据。本项目旨在构建一个完整的电动汽车电池SOH评估仿真模型,包括电池建模模块、数据采集模块、SOH估算算法模块以及性能评估模块,并通过仿真验证SOH评估的准确性。

xiaoheshang_123的博客 341

【HDU】4348 To the moon 【可持久化线段树】

传送门:【HDU】4348 To the moon 题目分析:可以将标记留在节点上,查询的时候累加就行了,这样避免了可持久化线段树打标记内存吃紧的窘态。 my code: #include #include #include using namespace std ; typedef long long LL ; #define rep( i , a , b ) f

poursoul 2102

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

hdu4348 To the moon,函数式线段树

hdu4348 To the moon,函数式线段树 修改某个区间,求某个区间的和,求某个区间过去某个时间的和,回到过去某个时间。 这是函数式线段树的裸题了。 修改区间可以将区间的变化量保存在对应区间的节点上,这样就不用lazy了。lazy还会导致更多的空间消耗。 由于卡空间,我只好把线段树写成了不保存左右端点的形式(不符合我风格啊)。

Necs的小窝 904

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

[HDU 4348]To the moon

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4348 大意 给定一个长为NNN的a[]a[]a[]数组,需要支持下列四种操作: 将a[l]a[l]a[l]~a[r]a[r]a[r]都增加ddd,同时使时间戳t+1t+1t+1 查询当前a[l]a[l]a[l]~a[r]a[r]a[r]的和 查询时间戳为tit_iti​(保证ti&lt;tt...

asdkjc的博客 241

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

HDU4348:To the moon

浅谈主席树:https://www.cnblogs.com/AKMer/p/9956734.html 浅谈标记永久化:https://www.cnblogs.com/AKMer/p/10137227.html 题目传送门:http://acm.hdu.edu.cn/showproblem.php?pid=4348 相比一般的主席树,这个要多支持一个操作,那就是区间修改。我们不能把区间里的...

aga28832的博客 187

【HDU4348】【主席树】To the moon

Problem Description BackgroundTo The Moon is a independent game released in November 2011, it is a role-playing adventure game powered by RPG Maker.The premise of To The Moon is based around a...

Gregory99174的博客 172

hdu4348 To the moon

地址:http://acm.hdu.edu.cn/showproblem.php?pid=4348 题目: To the moon Time Limit: 4000/2000 MS (Java/Others)Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 5374Accepted Submission...

weixin_30847865的博客 201

HDU - 4348 To the moon

题目大意: 对于给出的一组数据 C操作 : 给区间 l-r 的所有数据加 d,时间点加1 Q操作: 返回区间 l-r 的所有数据的和 H操作: 返回t时间点,l-r 的所有数据的和 B操作: 回到时间点t , 这时 t之后的时间都不可以再访问 代码 #include<stdio.h> #include<algorithm> #include<vector> #include<iostream> #define ll long long using na.

weixin_45691686的博客 236

HDU4348 To the moon【主席树】

To the moonTo\ the\ moonTo the moon 可持久化线段树,主席树 #include<cstdio> #include<cstring> #include<algorithm> using namespace std; typedef long long LL; const int maxn =...

qq_43710979的博客 210

hdu4348To the moon

Background To The Moon is a independent game released in November 2011, it is a role-playing adventure game powered by RPG Maker. The premise of To The Moon is based around a technology that allows

Davenny:~我今天该吃点什么捏~ 540

hdu4348 To the moon (可持久化线段树)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4348 题目大意:给定含有n个数的序列,有以下四种操作 1.C l r d:表示对区间[l,r]中的数加上d,并且时间加1 2.Q l r:询问当前时间区间[l,r]的和 3.H l r t:询问时间t区间[l,r]的和 4.B t :时间回到t Sample Input 10 5 1 ...

weixin_30268071的博客 158

hdu 4348 To the moon

许久没有更博客了...更点最近做的题吧. hdu 4348 To the moon 此处的主席树还需实现区间加.如果每次都下传 lazy 标记,显然爆炸. 使用标记永久化来处理.更新时一边走一边及时更新,不再向下时在当前节点打一个标记. 询问的时候将从根出发的链上标记全部累加起来计算贡献. #include<bits/stdc++.h> using namespace std;...

weixin_30600197的博客 120

Hdu 4348 To the moon 延迟更新

Hdu 4348 题意 给你一段序列 有四种操作 C 给l r 区间内数字加 D 同时时间t+=1 Q查询 当前时间 l r 区间内数字和 H 查询 t时间时 l r区间内数字和 ...

我是谁 --- 卡比兽 181
上一篇: BZOJ 2716/2648 SJY摆棋子
下一篇: 某九校联考模拟试题D1
DancingZ
博客等级 码龄9年 10粉丝 137原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值