poj 3468 A Simple Problem with Integers(线段树成段更新,延迟标记,Lazy)

1. 在 SAP ABAP 事物码 SEGW 里创建 SAP OData 项目 本文介绍如何在 SAP ABAP 事物码 SEGW 里创建 SEGW 项目,使用工具生成 Runtime 运行时需要的资源。 阅读详情

链接:http://poj.org/problem?id=3468


线段树成段更新,延迟标记

一般用到成段更新的时候都需要延迟标记,这个题用来Lazy入门很不错,主要就是掌握如何向上更新,向下更新

#include<stdio.h>
#include<string.h>
#define MAXN 100005
struct node
{
	int l,r;
	__int64 s,c;
}t[MAXN*4];
void construct(int l,int r,int p)
{
	t[p].l=l,t[p].r=r,t[p].s=t[p].c=0;
	if(l==r) return ;
	int m=(l+r)>>1;
	construct(l,m,p*2);
	construct(m+1,r,p*2+1);
}
void modify(int l,int r,__int64 val,int p)
{
	if(t[p].l==l&&t[p].r==r)
	{
		t[p].c+=val;
		t[p].s+=(r-l+1)*val;
		return ;
	}
	if(t[p].c)//向下更新
	{
		t[p*2].s+=(t[p*2].r-t[p*2].l+1)*t[p].c;
		t[p*2].c+=t[p].c;
		t[p*2+1].s+=(t[p*2+1].r-t[p*2+1].l+1)*t[p].c;
		t[p*2+1].c+=t[p].c;
		t[p].c=0;
	}
	int m=(t[p].l+t[p].r)>>1;
	if(r<=m) modify(l,r,val,p*2);
	else if(l>m) modify(l,r,val,p*2+1);
	else { modify(l,m,val,p*2); modify(m+1,r,val,p*2+1);}
	t[p].s=t[p*2].s+t[p*2+1].s;//向上更新
}
__int64 query(int l,int r,int p)
{
	if(t[p].l==l&&t[p].r==r)
		return t[p].s;
	if(t[p].c)
	{
		t[p*2].s+=(t[p*2].r-t[p*2].l+1)*t[p].c;
		t[p*2].c+=t[p].c;
		t[p*2+1].s+=(t[p*2+1].r-t[p*2+1].l+1)*t[p].c;
		t[p*2+1].c+=t[p].c;
		t[p].c=0;
	}
	int m=(t[p].l+t[p].r)>>1;
	if(r<=m) return query(l,r,p*2);
	else if(l>m) return query(l,r,p*2+1);
	else return query(l,m,p*2)+query(m+1,r,p*2+1);
}
int main()
{
	int i,a,b,n,m;
	char op[3];
	__int64 x,c;
	while(scanf("%d%d",&n,&m)!=EOF)
	{
		construct(1,n,1);
		for(i=1;i<=n;i++)
		{
			scanf("%I64d",&x);
			modify(i,i,x,1);
		}
		while(m--)
		{
			scanf("%s%d%d",op,&a,&b);
			if(op[0]=='C')
			{
				scanf("%I64d",&c);
				modify(a,b,c,1);
			}
			else
				printf("%I64d\n",query(a,b,1));
		}
	}
	return 0;
}



从零开始讲DDR(5)——读懂Datasheet 对于开发人员来说,需要根据实际场景和使用的需要,使用不同厂家,不同型号的DDR,虽然原理上大同小异,但是还是有一些细节上的需要注意的地方,接触一个新的DDR芯片,首先就是需要找到对应的datasheet,而能都读懂datasheet,也是一个硬件工程师的必备技能。 阅读详情

相关推荐

基于FPGA的cy7c68013a双向通信实验

基于FPGA的cy7c68013a双向通信实验     本实验是基于FPGA的cy7c68013a的USB双向通信实验,以前折腾过一段时间cy7c68013a,没有入门时感觉好难,入门了就会感觉很简单。本教程主要内容:     1.cy7c68013a的固件编写,以及生成iic固件和下载固件。     2.cy7c68013a的slave模式,以及他的读写时序     3.cy7c6801...

乘风的博客 3万+

浅析__线段树延迟标记

浅析__线段树延迟标记

3419

【asrpro语音模块+语音控制小风扇】

智能语音控制小风扇,使用ASRPRO语音模块只要一句话就能设置小风扇不同挡位的风力。图形化编程简单有效的控制输出PWM的占空比。

qq_57234300的博客 1万+

POJ3468(线段树+延迟更新)

A Simple Problem with Integers Time Limit: 5000MS   Memory Limit: 131072K Total Submissions: 43776   Accepted: 12806 Case Time Limit: 2000MS Description You have N i

晓风残月xj 715

谷歌账号国家或地区设置修改全攻略:条件、流程与避坑指南

谷歌账号的国家或地区设置与付款资料、账号历史行为及登录环境强绑定,修改时需满足特定条件。其原理在于地区作为索引键,关联内容库、货币结算和风控策略。正确切换可解决内容推荐错乱、付款失败等问题,适用于搬家、订阅区域限定服务等场景。操作前需在目标地区创建付款资料、清空余额并取消订阅,且一年仅能修改一次。本文详解从准备到验证的完整流程,并揭示官方文档未提及的实操陷阱,助你安全完成地区切换。

weixin_42521558的博客 2269

esp32-C3固件烧录用户手册

温馨提示:1.esp32-C3 BOOT脚为GPIO9,需要从芯片小板中焊接引出2.芯片小板中已经预留了所有烧录相关的引脚,大家可以按需焊接引线3.程序下载完,使用串口查看log时,需要使用220v供电使用(请务必准守用电安全)。原因:由于插座中包含继电器,计量计等耗电设备,所以usb转串口提供的3.3V电压和电流可能会出现供电不足,表现为usb转串口与电脑连接断断续续,导致无法查看log。

hbwang的博客 1万+

延迟标记——线段树进阶

延迟标记理解起来是很好理解,但是用代码实现却对我来说有些困难,可能是递归,优化,以及区间操作的原因,弄得我现在有点昏昏的,写一个博客,整理一下思路 根据题目可以以下的准备工作 这是第一个学习版本,求和以及sum延迟标记add都放在了结构体外面,使用了宏定义来简便代码的书写,数组开的大小依据题目,练习题目是POJ 3468      A Simple Problem with Intege

Df_cjc的博客 1393

优化NEXYS A7开发板(Xilinx Artix-7)Microblaze核的FLASH读写性能实战

本文针对NEXYS A7开发板(Xilinx Artix-7)上Microblaze核读写FLASH速度慢的问题,提供了系统性的优化实战指南。通过深入分析SPI控制器配置、Flash指令模式选择、Microblaze核的Cache与硬件加速器优化,以及程序运行位置(BRAM vs DDR)的调整,有效将FLASH读写性能从“龟速”提升至接近理论峰值。文章结合实测数据,为FPGA嵌入式开发者提供了清晰的性能瓶颈分析与解决方案。

carrot的博客 256

poj 3468 A Simple Problem with Integers(线段树+延迟标记)

Description You have N integers, A1, A2, ... , AN. You need to deal with two kinds of operations. One type of operation is to add some given number to each number in a given interval. The other is

hndu__lz的博客 314

openeuler在线/离线安装docker服务

openeuler在线/离线安装docker服务

haixuti7的博客 1071

《Arduino与LabVIEW开发实战》第2章 LabVIEW基础

第2章 LabVIEW基础 2.1 LabVIEW与虚拟仪器 2.1.1 什么是虚拟仪器 仪器仪表发展方向有很多,其中一个重要方向是将计算机和仪器结合起来。具体来说有两种方式,一种是将微处理器或微控制器嵌入到仪器中,构建智能化的内含嵌入式系统的仪器仪表,这是嵌入式仪器;另一种是将仪器装入计算机中,以通用计算机硬件及操作系统为载体,外配数据采集卡等外部设备,通过编制不同功能的程序,以实现多种仪...

jxgy01的博客 490

POJ 3468(成段更新)

Language: Default 线段树的成段更新 Time Limit: 5000MS   Memory Limit: 131072K Total Submissions: 38010   Accepted: 11017 Case Time Limit: 2000MS Description 对于数列 A1, A2,

nike0good |Oier&ACMer | 熟能生巧 1794

2、探秘储备池计算:原理、应用与前沿趋势

储备池计算(Reservoir Computing)作为一种新兴的计算方法,起源于计算神经科学和机器学习领域,现已广泛应用于非线性动力系统理论、物理学、材料科学、生物学和机器人学等多个领域。其核心优势在于概念简洁性,通过利用高维动态系统的非线性响应,将学习过程集中在读出层,避免了传统循环神经网络(RNN)训练的复杂性。储备池计算的发展方向主要包括拓展到非线性动态系统和利用物理动态系统作为计算资源(PRC),后者有望突破冯·诺依曼瓶颈,实现边缘计算。理论方面,储备池计算与人类大脑的信息处理方式密切相关,并推动

ggg99的专栏 733

POJ3468A Simple Problem with Integers(线段树成段更新--Lazy标记)

A Simple Problem with Integers Time Limit: 5000MS   Memory Limit: 131072K Total Submissions: 46811   Accepted: 13727 Case Time Limit: 2000MS Description You have N i

crazy_石头的专栏 793

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

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

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

POJ 3468 A Simple Problem with Integers (线段树成段更新) 解题报告

一道线段树成段更新的入门题。所谓成段更新(也叫延迟操作、懒惰标记),就是说在线段树的数组外,再开一个同样大小的lazy数组。当更新区间[l,r]中的每个元素时,不用更新到每个叶子节点,只需要更新到[l,r]所在的区间,同时在lazy数组中做记录,表示该节点的子节点尚未更新。        这样一来,当查询时,如果查询的区间完全包含[l,r],则不用更新子节点,直接用这个节点的数据;如果查询的区间

Light_Time 450

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

POJ 3468 :A Simple Problem with Integers——区间更新线段树经典题目

/* 经典区间成段更新题目。 题意:给出一个长度n的数字序列,已经m个操作, Q操作给出l,r:访问区间[l,r]的数字和; C操作给出l,r,x:将区间[l,r]内的所有数字都加上x。 Sample Input 10 5 1 2 3 4 5 6 7 8 9 10 Q 4 4 Q 1 10 Q 2 4 C 3 6 3 Q 2 4 Sample Output

duanxian0621的专栏 539

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

poj 3468 线段树,延迟标记法

http://poj.org/problem?id=3468 绝对称的上经典的线段树

u012342878的专栏 415

zoj 3633 Alice's present 线段树

链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3633 题意:给出一n个数的序列,然后又m个询问[x,y](下标),如果[x,y]内没有重复的数,就输出OK,否则输出从右至左第一个重复的数字 测试数据: 5 1 2 3 1 2 3 1 4 1 5 3 5 [1,4]间从右到左第一个重复的数字是1 [

yjCola 4723

poj3667 Hotel (线段树区间合并)

链接:http://poj.org/problem?id=3667 题意:n个连续的房间m个操作。操作分两种,第一种以1 x形式给出,找到最左的能连续容下x个人的连续房间,并输出左端点的编号,如果找不到就输出0.第二章以2 l x的形式给出,表示以l为起点的x个房间都清空。 查询的时候要能直接获取区间的最大连续空房间,这样就能判断能不能连续放下这x个人,但这样还确定不了具体放哪。放的位

yjCola 2409

hdu 4521 小明系列问题——小明序列

链接:http://acm.hdu.edu.cn/showproblem.php?pid=4521 题目中文 这个题我用线段树做的,也有更快的算法,这里只介绍线段树的方式 叶子节点为输入的值 从头开始遍历,线段树天然地排好序,所有不用管大小的问题,设加入了点a[i],那么在一个子序列中这个点最近的下一个点就是a[i+d+1],相当于对于a[i+d+1]来说,当加入了点a[i]时,就

yjCola 996

hdu 1542 Atlantis(线段树,扫描线)

链接:http://acm.hdu.edu.cn/showproblem.php?pid=1542 题意:n个矩阵,给出每个矩阵的左下和右上两个点的坐标,求出所有矩形总的覆盖面积。 扫描线问题,因为坐标是浮点型,那就必须把坐标离散化,我这直接上map了。 再来就是求这个面积的方式了:我这是向y轴映射,那么就保存每一条竖线,包扩该条竖线的x坐标,上下两个y坐标,还有用lr保存这条竖线是

yjCola 972

poj2777 Count Color线段树延迟更新,二进制状态记录

题目链接 线段树延迟更新的运用,这里用到二进制的方式保存状态,位运算向上更新状态 需要注意的是给出的a,b可能a>b #include #include #define MAXN 100005 struct node { int l,r; int c; int rec; }t[MAXN*4]; void construct(int l,int r,int p)

yjCola 946

poj 2352-Stars

链接:http://poj.org/problem?id=2352 因为题目给出的数据y是非递减的,所以y可以直接忽略掉,题目不是很难,比较适合练手,给出线段树和树状数组做的代码 线段树: #include #include #define MAXN 32010 int sum[15010]; struct node { int l,r; int s; }t[4*

yjCola 903

hdu 3255 Farming(扫描线、求立方体交)

hdu 3255 Farming 纠结了几个小时,不过还是很值得的,x

yjCola 874

poj 3145 Harmony Forever(线段树)

poj 3145 Harmony Forever 奇葩怪异吐血题,无力duo'shuo

yjCola 873

poj 2482 Stars in Your Window(线段树,扫描线)

poj 2482 Stars in Your Window 题意,用一个矩形qu

yjCola 872
上一篇: hdu 3333 Turing Tree 线段树
下一篇: poj3667 Hotel (线段树区间合并)
yjCola
博客等级 码龄14年 4粉丝 138原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值