POJ 3468 经典线段树

POJ、HDU、ZOJ、SOJ水题过滤器 自动探测POJ、HDU、SOJ、ZOJ水题,对于有志于刷遍各种水题的ACMer来说非常有用 立即下载
#include<cstdio>
using namespace std;
#define M 400009
typedef long long ll;

struct Node
{
    int l,r;
    ll sum,add;
}no[M];
ll a[100001];

ll build(int l,int r,int num)
{
    no[num].l=l;
    no[num].r=r;
    no[num].add=0;

    if(l==r)
    {
        no[num].sum=a[l];
        return a[l];
    }

    ll i=build(l,(l+r)/2,num*2);
    ll j=build((l+r)/2+1,r,num*2+1);
    no[num].sum=i+j;
    return i+j;
}

void insert(int l,int r,int p,int num)
{
    if(l<=no[num].l&&r>=no[num].r)
    {
        no[num].add+=p;
        no[num].sum+=p*(no[num].r - no[num].l + 1);
        return ;
    }

    if(no[num].add!=0)
    {
        int ls=num*2,rs=num*2+1;
        no[ls].add+=no[num].add;
        no[ls].sum+=(no[ls].r - no[ls].l + 1 ) * no[num].add;
        no[rs].add+=no[num].add;
        no[rs].sum+=(no[rs].r - no[rs].l + 1 ) * no[num].add;
        no[num].add=0;
    }
    int mid = (no[num].r + no[num].l) / 2;
    if(l<=mid)
    {
        insert(l,r,p,num * 2);
    }
    if(r>mid)
    {
        insert(l,r,p,num * 2 + 1);
    }
    no[num].sum = no[num * 2].sum + no[num*2+1].sum;
}

ll search(int l,int r,int num)
{
    if(l<=no[num].l&&r>=no[num].r)
    {
        return no[num].sum;
    }

    if(no[num].add!=0)
    {
        int ls=num*2,rs=num*2+1;
        no[ls].add+=no[num].add;
        no[ls].sum+=(no[ls].r - no[ls].l + 1 ) * no[num].add;
        no[rs].add+=no[num].add;
        no[rs].sum+=(no[rs].r - no[rs].l + 1 ) * no[num].add;
        no[num].add=0;
    }

    int mid = (no[num].r + no[num].l) / 2;
    ll i,j;
    i=j=0;
    if(l<=mid)
    {
        i=search(l,r,num * 2);
    }
    if(r>mid)
    {
        j=search(l,r,num * 2 + 1);
    }
    no[num].sum = no[num * 2].sum + no[num*2+1].sum;
   
    return i+j;
}

int main()
{
    int n,m,i,j;
    while(~scanf("%d%d",&n,&m))
    {
        for(i=1;i<=n;i++)
        {
            scanf("%lld",a+i);
        }
        build(1,n,1);

        char temp[10];
        int l,r,p;
        for(i=0;i<m;i++)
        {
            scanf("%s",temp);
            if(temp[0]=='C')
            {
                scanf("%d%d%d",&l,&r,&p);
                insert(l,r,p,1);
            }
            else
            {
                scanf("%d%d",&l,&r);
                printf("%lld\n",search(l,r,1));
            }
        }
    }
    return 0;
}
Cadence SIP Layout 简单教程-第二章 [从whp1920 网易博客迁移至优快云] 第一章在正式布线之前做了必须做的准备工作,下面进入正题,打开Candence SIP RF Layout GXL软件。 第一节 导入外形尺寸 打开SIP设置文件保存路径,如下图所示进入导入DXF页面,选中前一章时画好的外框图。打开导入界面后,再进入DXF In Edit/View Layers界面选择所有层,导入Class选择DRAWING FOR... 阅读详情

相关推荐

【量化交易】迅投QMT——基础操作新建策略导入策略!

策略指标 #基础操作 #新建策略 在【我的】主页,点击新建策略按钮 点击【pyhton策略】模型 会弹出一个策略编辑器框 【新建策略文件】 编辑完点击【编译】按钮 关闭策略编辑器 导入策略 券商 QMT:1. 点击进入【模型研究】界面2. 右键 -> 选择本地. rzrk导入 投研端:1. 点击【行情】界面,选择模型2. 右键 -> 选择本地. rzrk导入 #策略在副图作为指标运行 在主图上双击策略 VBA策略可以直接输出图像

weixin_eng02048的博客 4116

poj3468-线段树详解

什么是线段树线段树,是一种树形结构,它的各个节点都保存的是一条线段。线段树主要是解决动态查询的问题,使用二叉树的结构后,它的操作基本的复杂度为O(logn).线段树的每个节点表示一个区间,其左右子树表示该节点的左半区间和右半区间。比如说,一个节点为[a, b],中间的值为c=(a+b)/2,左子节点表示的区间为[a,c],右子节点表示的区间为[c+1, b]线段树要解决的问题问题描述:在一个数组ar

编码之路 3011

STM32H7多通道ADC数据采集实战:CubeMX配置ADC1/2/3+DMA/BDMA+Cache避坑全记录

本文详细解析了STM32H7多通道ADC数据采集的实战配置,涵盖CubeMX中ADC1/2/3与DMA/BDMA的协同设置及Cache一致性处理。通过硬件架构分析、DMA优化技巧和Cache避坑指南,帮助开发者实现高精度数据采集,适用于电机控制、环境监测等嵌入式系统。

weixin_28744613的博客 294

详解代码(线段树) POJ-3468: A Simple Problem with Integers

很明显从逻辑上来说是一道关于线段树或者树状数组的模板题,需要我们去维护一个区间和,并且随时准备修改区间值并且对修改后的数组进行区间查询,查询区间元素总和! 代码尽量做到了每一行都有注释...

weixin_65039404的博客 368

ATAC-seq数据分析流程

Outline0. ATAC-seq原理0.1 染色体结构0.2 原理0.3 结果0.4 意义1. ATAC-seq数据分析流程1.1 上游分析(1)序列质控和比对(2)序列筛选1.2 下游分析1.3 进阶分析 0. ATAC-seq原理 0.1 染色体结构 0.2 原理 0.3 结果 0.4 意义 1. ATAC-seq数据分析流程 1.1 上游分析 (1)序列质控和比对 fastqc trim_golare bowtie2 mapping时要加上参数 --very-sensitive -X 2000

weixin_57830892的博客 1万+

【已验证】基于STM32F407与AD9833的幅频特性测试装置设计与实现

本文详细介绍了基于STM32F407微控制器和AD9833 DDS芯片的低成本幅频特性测试装置设计与实现方法。通过扫频原理,该装置能自动生成正弦波信号,测量滤波器等电路的输出幅度变化,并在LCD屏幕或示波器上绘制幅频特性曲线。文章提供了从硬件选型、CubeMX工程配置、关键驱动代码编写到数据处理与可视化的完整教程,帮助电子爱好者与工程师快速搭建实用的滤波器测试工具。

weixin_35649491的博客 121

POJ3468 —— 线段树 || 树状数组

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

XMzhou的专栏 890

(保姆式教程:从下数据到画图)python如何利用EOF分析SSTA海温异常现象并画图

保姆式教程,教你如何利用python分析1979-2004年的太平洋地区的海温异常SSTA,并且绘制出空间模态和时间序列的图片。

shayuxing的博客 2万+

POJ -- 3468 --线段树成段更新

很久以前的题目再做一遍复习一下。 要点: 1)约定在任何时候 add_num 到达节点的时候就立即更新节点的 sum 值。 2)每次更新节点回溯的时候记得维护节点的 sum 值。 3)执行询问操作的时候,遇到 lazy 标记为1 的时候往下 Push_down,,同时记得第一点 4)遇到符合要求的询问区间时,由于第一条的规定,直接返回 sum 值,而不必加上 区间长度*add_num

WoniuGe 722

点云体积计算方法之一 附python代码

另外需要注意,这个只适合点云密集分布的场景来计算体积,比如树木扫描的体积;如果只是有表面积扫描的点云,该方法就不能计算整个物体的体积了。通过计算点云所占用的体素的数量来计算点云的近似体积。这是一个非常粗略的近似值,对于复杂的形状可能不准确。

三维点云技术探索 1888

解码器选型参数,结构原理,工艺与注意问题总结

解码器芯片(Decoder Chip)是电子设备中的一个重要组件,通常用于处理、解释和输出存储在某种编码格式中的数据或信号。本文对解码器的工作原理,结构特点,工艺流程,选型参数及设计注意事项进行总结。

fydar的博客 1172

POJ 3468【线段树,懒惰标记】

题目:http://poj.org/problem?id=3468 给出N个整数,进行M次询问,C a b c 表示给区间[a, b]中的每一个数加上c, Q a b 表示询问区间[a, b] 的和 #include<iostream> #include<algorithm> #include<cstring> #include<string> #include<cstdio> #define ll long long int using na

Tw_light的博客 292

《Python基础教程》内容总览篇(持续更新中)

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为优快云博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的知识进行总结与归纳,不仅形成深入且独到的理解,而且能够帮助新手快速入门。个人精心开设的《Python基础课程》专栏订阅量接近900,帮助不少同学解决了Bug。

weixin_43178406的博客 35万+

POJ - 3468 A Simple Problem with Integers 经典线段树问题

POJ - 3468  A Simple Problem with Integers 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 g...

GYH0730的博客 310

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

poj 3468 经典线段树

只要加一个lazy就行了,注意的是update和query里的return条件。只要当前区间包含于查询区间就可以直接返回了。 当时没注意,只在query里设置了,update里没用lazy(汗 #include <queue> #include <cstdio> #include <set> #include <string> #includ...

qq_40620465的博客 132

OV9734 DATASHEET,完整规格书

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

poj 3468-A Simple Problem with Integers经典线段树

这个可以作为线段树的模板来使用了,很经典,以前总是搞不清楚要向下更新,这次是明白了,多次修改很多区间时没必要每次都去修改,可以最后一块修改 View Code 1 #include<stdio.h> 2 #include<string.h> 3 #define N 100005 4 struct node 5 { 6 ...

weixin_30359021的博客 60

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

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

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

POJ 3468 A Simple Problem with Integers (线段树区间更新经典)

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 to ask for th

Tsaryu的博客 413

【acm模板整理】线段树(区间更新)

注:本系列只为整理、保存比赛模板用,并非代码均为自己所写。会给出原代码的链接。 题号:POJ3468 题意:模板题不解释。。 #include<iostream> #include<cstring> #include<cstdio> #define ll long long using namespace std; int a[100010]; ll...

eulers_student的博客 229

POJ 3468 A Simple Problem with Integers 线段树区间修改

http://poj.org/problem?id=3468 题目大意: 给你N个数还有Q组操作(1 ≤ N,Q ≤ 100000) 操作分为两种,Q A B 表示输出[A,B]的和 C A B X表示把[A,B]的所有数加上X 思路: 线段树的区间修改。。。。。 昨天晚上改了老半天。 然后关机准备睡觉毕竟今天有实验。。去洗个头。。突然有灵感。。急急忙忙的开电脑改...

weixin_30289831的博客 80

2019_GDUT_新生专题V算法优化 B. A Simple Problem with Integers POJ 3468

来源 POJ3468 题目: 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 to...

qq_39581539的博客 185

线段树例题

HDU 1754 线段树板子题,结构体存保存的是左右端点以及这个区间内的最大值 建树的过程其实是一个后序遍历的过程,先建立左子树然后右子树,根节点的最大值就是max(左孩子的最大值,右孩子的最大值) 修改类似,更新当前节点的最大值为max(value, 当前节点的最大值) 查询的时候用一个全局变量记录,每次查找到对应区间,就更新全局变量res = max(res, 当前区间的最大值) Java会...

mathor的博客 463

【线段树】POJ 3468 A Simple Problem with Integers

POJ 3468 A Simple Problem with Integers 题意:区间修改,区间查询 思路:模板题 #include <iostream> #include <cstdio> #include <algorithm> #include <queue> #include <cmath> #include <cs...

L_X_ 173

POJ - 3468 A Simple Problem with Integers (线段树——懒标记)(注释详解)

POJ - 3468 A Simple Problem with Integers (模板题)(懒标记) Problem You haveNintegers,A1,A2, ... ,AN. You need to deal with two kinds of operations. One type of operation is to add some given numbe...

四季不败的博客 293

poj 3468 A Simple Problem with Integers(线段树成段更新,懒惰标记的使用)经典题目

1、http://poj.org/problem?id=3468 2、题目: A Simple Problem with Integers Time Limit: 5000MS   Memory Limit: 131072K Total Submissions: 52972   Accepted: 15828 Case Time Limit: 20

sdjzping的专栏 888

线段树题目集(持续更新)

一、线段树入门基础 1.HDU1166 敌兵布阵 维护区间和+单点修改+区间查询+IO优化 2.HDU1754 I Hate It 维护区间最小值+单点修改+区间查询+IO优化 3.HDU1689 Just a Hook 维护区间和+区间修改(替换值)+Lazy标记+根节点查询 4.POJ3468 A Simple Problem with Integers 维护区间和+区间修改+Lazy标记+区间查询 ...

HeartFireY的博客 393
上一篇: 最长回文子串
下一篇: 优先队列
MakingMaker
博客等级 码龄15年 6粉丝 108原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值