zoukankan      html  css  js  c++  java
  • C++-POJ3468-A Simple Problem with Integers Lineup[线段树区间修改区间查询]

     1 #include <cstdio>
     2 #include <iostream>
     3 using namespace std;
     4 typedef long long ll;
     5 const int MAXN=1e5+10;
     6 struct node{ll sum,add;}t[MAXN<<2];
     7 int L,R;ll d;
     8 
     9 #define ls rt<<1
    10 #define rs rt<<1|1
    11 
    12 void push_up(int rt){t[rt].sum=t[ls].sum+t[rs].sum;}
    13 void push_down(int rt,int l,int r,int mid){
    14     if(t[rt].add){
    15         t[ls].add+=t[rt].add;
    16         t[rs].add+=t[rt].add;
    17         t[ls].sum+=(mid-l+1)*t[rt].add;
    18         t[rs].sum+=(r-mid)*t[rt].add;
    19         t[rt].add=0;
    20     }
    21 }
    22 
    23 void build(int rt,int l,int r){
    24     if(l==r){scanf("%lld",&t[rt].sum);return;}
    25     int mid=(l+r)>>1;
    26     build(ls,l, mid);
    27     build(rs,mid+1,r);
    28     push_up(rt);
    29 }
    30 
    31 void update(int rt,int l,int r){
    32     if(L<=l&&r<=R){t[rt].sum+=(r-l+1)*d,t[rt].add+=d;return;}
    33     int mid=(l+r)>>1;
    34     push_down(rt,l,r,mid);
    35     if(L<=mid)update(ls,l,mid);
    36     if(R>mid)update(rs,mid+1,r);
    37     push_up(rt);
    38 }
    39 
    40 ll query(int rt, int l, int r){
    41     if(L<=l&&r<=R)return t[rt].sum;
    42     int mid=(l+r)>>1;
    43     push_down(rt,l,r,mid);
    44     ll ans=0;
    45     if(L<=mid)ans+=query(ls,l,mid);
    46     if(R>mid)ans+=query(rs,mid+1,r);
    47     return ans;
    48 }
    49 
    50 int main(){
    51     int n,m;
    52     scanf("%d%d",&n,&m);
    53     build(1,1,n);
    54     for(char s[3];m--;){
    55         scanf("%s",s);
    56         if(s[0]=='C')scanf("%d%d%lld",&L,&R,&d),update(1,1,n);
    57         else scanf("%d%d",&L,&R),printf("%lld
    ",query(1,1,n));
    58     }
    59     return 0;
    60 }
  • 相关阅读:
    如何制作扫描版的文档
    网易云音乐歌单下载
    【超链接】一些OI学习网站
    爬虫 之Requests库的详细使用
    爬虫 之基本原理
    Django Rest framework 框架之认证使用和源码执行流程
    restful 规范(建议)
    基于Django实现restful api
    csrf补充
    Django Rest framework 框架
  • 原文地址:https://www.cnblogs.com/JasonCow/p/13740622.html
Copyright © 2011-2022 走看看