2018年全国多校算法寒假训练营练习比赛(第五场)H Tree Recovery
Tree Recovery
空间限制: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的更多相关文章
- 【2018年全国多校算法寒假训练营练习比赛(第五场)-E】情人节的电灯泡(二维树状数组单点更新+区间查询)
试题链接:https://www.nowcoder.com/acm/contest/77/E 题目描述 情人节到了,小芳和小明手牵手,打算过一个完美的情人节,但是小刚偏偏也来了,当了一个明晃晃的电灯泡 ...
- 2018年全国多校算法寒假训练营练习比赛(第一场)闯关的lulu
闯关的lulu 链接:https://www.nowcoder.com/acm/contest/67/J 来源:牛客网 题目描述 勇者lulu某天进入了一个高度10,000,000层的闯关塔,在塔里每 ...
- 2018年全国多校算法寒假训练营练习比赛(第一场)D N阶汉诺塔变形
https://www.nowcoder.com/acm/contest/67/D 思路: 先手动模拟一下过程,以下是模拟过程,按顺序表示第几步需要移动的盘标号 1 1 2 1 1 2 1 1 3 1 ...
- 2018年全国多校算法寒假训练营练习比赛(第一场)E 恋与程序员
https://www.nowcoder.com/acm/contest/67/E 思路: dfs 代码: #include<bits/stdc++.h> using namespace ...
- 2018年全国多校算法寒假训练营练习比赛(第一场)G 圆圈
https://www.nowcoder.com/acm/contest/67/G 思路: 分形. 记录中间左边点的坐标,然后推出另外3个点的坐标,递归到最简单的情况. 代码: #include< ...
- 2018年全国多校算法寒假训练营练习比赛(第一场)C 六子冲
https://www.nowcoder.com/acm/contest/67/C 思路: 模拟. 代码: #include<bits/stdc++.h> using namespace ...
- 2018年全国多校算法寒假训练营练习比赛(第二场)B - TaoTao要吃鸡
链接:https://www.nowcoder.com/acm/contest/74/B来源:牛客网 题目描述 Taotao的电脑带不动绝地求生,所以taotao只能去玩pc版的荒野行动了, 和绝地求 ...
- 2018年全国多校算法寒假训练营练习比赛(第二场)F - 德玛西亚万岁
链接:https://www.nowcoder.com/acm/contest/74/F来源:牛客网 题目描述 德玛西亚是一个实力雄厚.奉公守法的国家,有着功勋卓著的光荣军史. 这里非常重视正义.荣耀 ...
- 2018年全国多校算法寒假训练营练习比赛(第一场)J - 闯关的lulu
链接:https://www.nowcoder.com/acm/contest/67/J来源:牛客网 题目描述 勇者lulu某天进入了一个高度10,000,000层的闯关塔,在塔里每到一层楼,他都会获 ...
- 吐泡泡(2018年全国多校算法寒假训练营练习比赛(第二场)+栈模拟)+Plug-in(codeforces81A+栈模拟)
吐泡泡题目链接:https://www.nowcoder.com/acm/contest/74/A 题目: 思路: 这种题目当初卡了我很久,今天早训时遇到一个一样得题,一眼就想到用栈模拟,就又回来把这 ...
随机推荐
- 什么是redis的缓存雪崩与缓存穿透
今天来分享一下Redis几道常见的面试题: 如何解决缓存雪崩? 如何解决缓存穿透? 如何保证缓存与数据库双写时一致的问题? 一.缓存雪崩 1.1 什么是缓存雪崩? 首先我们先来回答一下我们为什么要用缓 ...
- mysql 学习第一天
RDBMS 术语 在我们开始学习MySQL 数据库前,让我们先了解下RDBMS的一些术语: 数据库: 数据库是一些关联表的集合. 数据表: 表是数据的矩阵.在一个数据库中的表看起来像一个简单的电子表格 ...
- JSON在线格式化 jsoneditor使用
const placeholder = { string: 'hello world!', boolean: true, color: '#6c928c', number: 123, null: nu ...
- ContentProvider 使用详解
极力推荐文章:欢迎收藏 Android 干货分享 阅读五分钟,每日十点,和您一起终身学习,这里是程序员Android 本篇文章主要介绍 Android 开发中的部分知识点,通过阅读本篇文章,您将收获以 ...
- (15)ASP.NET Core Web主机(IWebHostBuilder)
1.前言 ASP.NET Core应用程序可以配置和启动主机(Host).主机负责应用程序启动和生存期管理,配置服务器和请求处理管道.主机还可以设置日志记录.依赖关系注入和配置.而host主机又包括W ...
- html的一些基本属性介绍
一.html的属性类型: 1.常见标签属性: a.<h1>:align对其方式 例如:<h1 align="right"> hhhhh</ ...
- Oracle中查看最近被修改过的表的方法
1.select uat.table_name from user_all_tables uat 该SQL可以获得所有用户表的名称 2.select object_name, created,last ...
- 弹性盒子---CSS3布局方式
1.弹性盒子/伸缩盒子 如果要使用弹性盒子属性,首先要将父级元素变成弹性盒子 Flex-direction 设置伸缩盒子的内部元素的排列方式 Row 从左到右安行排列 Column 从上到下按 ...
- 物流运输trans「ZJOI2006」
[题目描述] 物流公司要把一批货物从码头\(A\)运到码头\(B\).由于货物量比较大,需要\(n\)天才能运完.货物运输过程中一般要转停好几个码头.物流公司通常会设计一条固定的运输路线,以便对整个运 ...
- API开发之接口安全(二)-----sign校验
上一章 我们说了 sign的生成 那么 我们如何确定这个sign的准确性呢 下来 我们说说 校验sign的那些事 在拿到header里面的内容之后 我们首先需要对其内容的基本参数做一个校验 我们补充下 ...