Tree Recovery

时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 131072K,其他语言262144K
64bit IO Format: %lld

题目描述:进行区间求和,区间加减(线段树加懒惰标记)

输入

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

输出

4
55
9
15
#include<cstdio>
#include<cstring>
using namespace std;
const int maxn = +;
long long a[maxn];
struct node
{
long long l,r;
long long date,add;
} T[maxn*];
long long n,m;
long long ans=;
void build(long long v,long long l,long long r)
{
T[v].l=l,T[v].r=r;
if(l==r)
{
T[v].date=a[l];
return ;
}
long long mid = (l+r)>>;
build(v<<,l,mid);
build(v<<|,mid+,r);
T[v].date=T[v<<].date+T[v<<|].date;
}
void add(long long v,long long l,long long r,long long value)
{
T[v].date+=(r-l+)*value;
if(T[v].l==l&&T[v].r==r)
{
T[v].add+=value;
return ;
}
if(T[v].add)
{
T[v<<].date+=(T[v<<].r-T[v<<].l+)*T[v].add;
T[v<<|].date+=(T[v<<|].r-T[v<<|].l+)*T[v].add;
T[v<<].add+=T[v].add;
T[v<<|].add+=T[v].add;
T[v].add=;
}
long long mid=(T[v].l+T[v].r)>>;
if(r<=mid)
{
add(v<<,l,r,value);
}
else
{
if(l>mid)
{
add(v<<|,l,r,value);
}
else
{
add(v<<,l,mid,value);
add(v<<|,mid+,r,value);
}
}
}
void query(long long v,long long l,long long r)
{
if(T[v].l==l&&T[v].r==r)
{
ans+=T[v].date;
return ;
}
if(T[v].add)
{
T[v<<].date+=(T[v<<].r-T[v<<].l+)*T[v].add;
T[v<<|].date+=(T[v<<|].r-T[v<<|].l+)*T[v].add;
T[v<<].add+=T[v].add;
T[v<<|].add+=T[v].add;
T[v].add=;
}
long long mid = (T[v].l+T[v].r)>>;
if(r<=mid)
{
query(v<<,l,r);
}
else
{
if(l>mid)
query(v<<|,l,r);
else
{
query(v<<,l,mid);
query(v<<|,mid+,r);
}
}
}
int main()
{
scanf("%lld%lld",&n,&m);
for(int i=; i<=n; i++)scanf("%lld",&a[i]);
build(,,n);
while(m--)
{
char s[];
long long x,y,z;
scanf("%s",s);
if(s[]=='Q')
{
scanf("%lld%lld",&x,&y);
ans=;
query(,x,y);
printf("%lld\n",ans);
}
else
{
scanf("%lld%lld%lld",&x,&y,&z);
add(,x,y,z);
}
}
return ;
}

2018年全国多校算法寒假训练营练习比赛(第五场)H Tree Recovery的更多相关文章

  1. 【2018年全国多校算法寒假训练营练习比赛(第五场)-E】情人节的电灯泡(二维树状数组单点更新+区间查询)

    试题链接:https://www.nowcoder.com/acm/contest/77/E 题目描述 情人节到了,小芳和小明手牵手,打算过一个完美的情人节,但是小刚偏偏也来了,当了一个明晃晃的电灯泡 ...

  2. 2018年全国多校算法寒假训练营练习比赛(第一场)闯关的lulu

    闯关的lulu 链接:https://www.nowcoder.com/acm/contest/67/J 来源:牛客网 题目描述 勇者lulu某天进入了一个高度10,000,000层的闯关塔,在塔里每 ...

  3. 2018年全国多校算法寒假训练营练习比赛(第一场)D N阶汉诺塔变形

    https://www.nowcoder.com/acm/contest/67/D 思路: 先手动模拟一下过程,以下是模拟过程,按顺序表示第几步需要移动的盘标号 1 1 2 1 1 2 1 1 3 1 ...

  4. 2018年全国多校算法寒假训练营练习比赛(第一场)E 恋与程序员

    https://www.nowcoder.com/acm/contest/67/E 思路: dfs 代码: #include<bits/stdc++.h> using namespace ...

  5. 2018年全国多校算法寒假训练营练习比赛(第一场)G 圆圈

    https://www.nowcoder.com/acm/contest/67/G 思路: 分形. 记录中间左边点的坐标,然后推出另外3个点的坐标,递归到最简单的情况. 代码: #include< ...

  6. 2018年全国多校算法寒假训练营练习比赛(第一场)C 六子冲

    https://www.nowcoder.com/acm/contest/67/C 思路: 模拟. 代码: #include<bits/stdc++.h> using namespace ...

  7. 2018年全国多校算法寒假训练营练习比赛(第二场)B - TaoTao要吃鸡

    链接:https://www.nowcoder.com/acm/contest/74/B来源:牛客网 题目描述 Taotao的电脑带不动绝地求生,所以taotao只能去玩pc版的荒野行动了, 和绝地求 ...

  8. 2018年全国多校算法寒假训练营练习比赛(第二场)F - 德玛西亚万岁

    链接:https://www.nowcoder.com/acm/contest/74/F来源:牛客网 题目描述 德玛西亚是一个实力雄厚.奉公守法的国家,有着功勋卓著的光荣军史. 这里非常重视正义.荣耀 ...

  9. 2018年全国多校算法寒假训练营练习比赛(第一场)J - 闯关的lulu

    链接:https://www.nowcoder.com/acm/contest/67/J来源:牛客网 题目描述 勇者lulu某天进入了一个高度10,000,000层的闯关塔,在塔里每到一层楼,他都会获 ...

  10. 吐泡泡(2018年全国多校算法寒假训练营练习比赛(第二场)+栈模拟)+Plug-in(codeforces81A+栈模拟)

    吐泡泡题目链接:https://www.nowcoder.com/acm/contest/74/A 题目: 思路: 这种题目当初卡了我很久,今天早训时遇到一个一样得题,一眼就想到用栈模拟,就又回来把这 ...

随机推荐

  1. 【iOS】UIButton 常用属性

    发现 UIButton 的相关属性不熟悉了……常用的一些属性代码如下: UIButton *add = [UIButton buttonWithType:UIButtonTypeCustom]; ad ...

  2. Python—三目运算

    Python 可通过 if 语句来实现三目运算的功能,因此可以近似地把这种 if 语句当成三目运算符.作为三目运算符的 if 语句的语法格式如下: (True_statements) if (expr ...

  3. 大型系列课程之-七夕告白之旅Electron篇

    上一篇分享了一下vbs的撩妹攻略,但细心的兄弟会发现,这种脚本式的攻城方案并不得心应手,有很多妹子害怕是病毒根本不敢点击,而且这个脚本界面风格也不漂亮,不能轻易打动妹子的心,怎么破,小编这次在为各位老 ...

  4. Spring Cloud下基于OAUTH2+ZUUL认证授权的实现

    Spring Cloud下基于OAUTH2认证授权的实现 在Spring Cloud需要使用OAUTH2来实现多个微服务的统一认证授权,通过向OAUTH服务发送某个类型的grant type进行集中认 ...

  5. hadoop学习(二)----HDFS简介及原理

    前面简单介绍了hadoop生态圈,大致了解hadoop是什么.能做什么.带着这些目的我们深入的去学习他.今天一起看一下hadoop的基石--文件存储.因为hadoop是运行与集群之上,处于分布式环境之 ...

  6. java并发编程(二十二)----(JUC集合)ConcurrentHashMap介绍

    这一节我们来看一下并发的Map,ConcurrentHashMap和ConcurrentSkipListMap.ConcurrentHashMap通常只被看做并发效率更高的Map,用来替换其他线程安全 ...

  7. 原 CNN--卷积神经网络从R-CNN到Faster R-CNN的理解(CIFAR10分类代码)

    1. 什么是CNN 卷积神经网络(Convolutional Neural Networks, CNN)是一类包含卷积计算且具有深度结构的前馈神经网络(Feedforward Neural Netwo ...

  8. Eclipse+CXF框架开发Web服务实战

    一. 说明 采用CXF框架开发webservice. 所用软件及版本如下.  操作系统:Window XP SP3.  JDK:JDK1.6.0_07,http://www.oracle.com/ ...

  9. HashMap与ConcurrentHashMap在Java8的改进

    链接:http://www.cnblogs.com/huaizuo/archive/2016/04/20/5413069.html#undefined http://www.cnblogs.com/h ...

  10. VMware安装Centos7虚拟机

    首先安装虚拟机很简单,所以呢,具体的安装过程就引用别人的博客,这篇文字很详细,引用之后会在后面加上一些遇到的问题: 原文:https://blog.csdn.net/babyxue/article/d ...