洛谷U5653 宋荣子的小饼干
题目描述
楼下机房的LYL有n个妹子,分别编号为a1,a2……an,每个妹子都拥有一定数量的小饼干。有一天,saruka没有吃晚饭,饿的不要不要的,这时,他忽然想起了LYL的妹子们有小饼干可以吃。于是,saruka就去找LYL。不过LYL并不想让saruka轻易地从自己的妹子们手中拿走小饼干,于是,LYL就给saruka出了一道题,如果saruka可以做对,就把小饼干给saruka。可是saruka已经饿的辣眼睛了,根本没有力气再来做题了,你能来帮一帮saruka嘛?题目是这样的,你要进行两种操作,一种操作是代替LYL给区间[a,b]的妹子们每人发一定数量的小饼干,另一种操作是查询一下区间[a,b]的妹子们一共拥有多少块小饼干。
输入输出格式
输入格式:
第一行有两个整数n和q,分别表示LYL的妹子的数量和要进行的操作的次数。
第二行有n个数,表示初始状态下每个妹子拥有的小饼干数。
接下来的q行,每行有一个操作:
“C a b c”表示给区间[a,b]的妹子们每人发c块小饼干;
“Q a b”表示查询一下区间[a,b]的妹子们一共有多少小饼干。
输出格式:
一共有Q行,每行一个整数,表示妹子们有的饼干数(也就是只用输出操作Q的结果)。
输入输出样例
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
说明
1 ≤ n,q ≤ 100000
0 ≤ ai ≤ 1000000000
-10000 ≤ C ≤ 10000
请注意,C的值可以为负,也就是说LYL可以从妹子手中拿走小饼干。这个家伙!!
因为题面很有趣就写了。
实际上是裸的线段树区间修改
/*by SilverN*/
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
#define ls l,mid,rt<<1
#define rs mid+1,r,rt<<1|1
#define LL long long
using namespace std;
const int mxn=;
struct node{
LL sum;
LL mk;
}t[mxn<<];
LL data[mxn];
int n,q;
void update(int l,int r,int rt){
if(l==r){t[rt].mk=;return;}
int mid=(l+r)>>;
t[rt<<].sum+=t[rt].mk*(mid-l+);
t[rt<<|].sum+=t[rt].mk*(r-mid);
t[rt<<].mk+=t[rt].mk;
t[rt<<|].mk+=t[rt].mk;
t[rt].mk=;
return;
}
void Build(int l,int r,int rt){
if(l==r){
t[rt].sum=data[l];
t[rt].mk=;
return;
}
int mid=(l+r)>>;
Build(ls);
Build(rs);
t[rt].sum=t[rt<<].sum+t[rt<<|].sum;
return;
}
void change(int L,int R,LL v,int l,int r,int rt){
if(L<=l && r<=R){
t[rt].mk+=v;
t[rt].sum+=v*(r-l+);
return;
}
int mid=(l+r)>>;
if(t[rt].mk)update(l,r,rt);
if(L<=mid)change(L,R,v,ls);
if(R>mid)change(L,R,v,rs);
t[rt].sum=t[rt<<].sum+t[rt<<|].sum;
return;
}
LL query(int L,int R,int l,int r,int rt){
if(L<=l && r<=R){
return t[rt].sum;
}
int mid=(l+r)>>;
LL res=;
if(t[rt].mk)update(l,r,rt);
if(L<=mid)res+=query(L,R,ls);
if(R>mid)res+=query(L,R,rs);
return res;
}
int main(){
scanf("%d%d",&n,&q);
int i,j;
for(i=;i<=n;i++)scanf("%d",&data[i]);
Build(,n,);
char op[];int x,y;LL c;
while(q--){
scanf("%s",op);
if(op[]=='Q'){
scanf("%d%d",&x,&y);
printf("%lld\n",query(x,y,,n,));
}
else{
scanf("%d%d%lld",&x,&y,&c);
change(x,y,c,,n,);
}
}
return ;
}
洛谷U5653 宋荣子的小饼干的更多相关文章
- 洛谷 P3951 NOIP 2017 小凯的疑惑
洛谷 P3951 NOIP 2017 小凯的疑惑 题目描述 小凯手中有两种面值的金币,两种面值均为正整数且彼此互素.每种金币小凯都有 无数个.在不找零的情况下,仅凭这两种金币,有些物品他是无法准确支付 ...
- 【洛谷2304_LOJ2134】[NOI2015]小园丁与老司机(动态规划_网络流)
题目: 洛谷 2304 LOJ 2134 (LOJ 上每个测试点有部分分) 写了快一天 -- 好菜啊 分析: 毒瘤二合一题 -- 注意本题(及本文)使用 \(x\) 向右,\(y\) 向上的「数学坐标 ...
- 洛谷 P2709 BZOJ 3781 小B的询问
题目描述 小B有一个序列,包含N个1~K之间的整数.他一共有M个询问,每个询问给定一个区间[L..R],求$\sum_1^Kc_i^2$的值,其中$c_i$表示数字i在[L..R]中的重复次数.小B请 ...
- 不失一般性和快捷性地判定决策单调(洛谷P1912 [NOI2009]诗人小G)(动态规划,决策单调性,单调队列)
洛谷题目传送门 闲话 看完洛谷larryzhong巨佬的题解,蒟蒻一脸懵逼 如果哪年NOI(放心我这样的蒟蒻是去不了的)又来个决策单调性优化DP,那蒟蒻是不是会看都看不出来直接爆\(0\)?! 还是要 ...
- [洛谷P3697]开心派对小火车
题目:洛谷P3697 题目大意是有各站停列车(慢车,相邻2站时间A)和特急列车(相邻2站时间B),特急列车在特定站点停靠. 现在加一种快速列车(相邻2站时间C,A>C>B),停靠K站(包括 ...
- 【洛谷P4251】[SCOI2015]小凸玩矩阵(二分+二分图匹配)
洛谷 题意: 给出一个\(n*m\)的矩阵\(A\).现要从中选出\(n\)个数,任意两个数不能在同一行或者同一列. 现在问选出的\(n\)个数中第\(k\)大的数的最小值是多少. 思路: 显然二分一 ...
- [洛谷201704R1]开心派对小火车
OJ题号:洛谷P3697 思路: 贪心.首先从起点出发,开特急电车,对于每一个特急车站$s_{i}$,分别下一次车,计算从当前车站$s_{i}$出发坐各停电车在指定时限内$t$最远能够到达的车站$r_ ...
- 洛谷 P1494 [国家集训队] 小Z的袜子
题目概述: 小Z把N只袜子从1到N编号,然后从编号L到R(L 尽管小Z并不在意两只袜子是不是完整的一双,甚至不在意两只袜子是否一左一右,他却很在意袜子的颜色,毕竟穿两只不同色的袜子会很尴尬. 你的任务 ...
- 洛谷 P2498 [SDOI2012]拯救小云公主 解题报告
P2498 [SDOI2012]拯救小云公主 题目描述 英雄又即将踏上拯救公主的道路-- 这次的拯救目标是--爱和正义的小云公主. 英雄来到\(boss\)的洞穴门口,他一下子就懵了,因为面前不只是一 ...
随机推荐
- [本人开发的游戏] Discuz网页动物园插件1.0Beta发布!让积分流动起来!
插件发布 插件名称: DZ网页动物园插件 插件来源: 原创插件 适用版本: Discuz! X3 语言编码: GBK简体 UTF8简体 BIG5繁体 UTF8繁体 最后更新时间: 2014- ...
- Android--使用VideoView播放视频
承香墨影 Android--使用VideoView播放视频 前言 之前有讲过如何使用SurfaceView配合MediaPlayer播放视频,其实Android还为开发人员提供了另外一种更简单 ...
- Hibernate入门注解笔记
@Entity 代表实体 映射一张表 @Table 定义表的属性 @Embeddable 定义类级别可以被嵌入 @Id 指定主键 @GeneratedValue 指定主键生成策略 @Column指定列 ...
- ORACLE中创建和删除临时表
CREATE GLOBAL TEMPORARY TABLE TABLENAME ( COL1 VARCHAR2(10), COL2 NUMBER) ON COMMIT PRESERVE(D ...
- Redis缓存数据库详解
Redis最为常用的数据类型主要有以下五种: 1)String 2)Hash 3)List 4)Set 5)Sorted set 在具体描述这几种数据类型之前,我们先通过一张图了解下Redis内部内存 ...
- velocity .vm
关于.vm 后缀的文件,是velocity的文件.velocity是基于java的一种页面模板引擎,支持#if #else #foreach等写法的前台文件.$link.contextPath是该引擎 ...
- 浏览器默认样式(User Agent Stylesheet)
原文:http://www.zjgsq.com/898.html 不同浏览器对于相同元素的默认样式并不一致,这也是为什么我们在CSS的最开始要写 * {padding:0;marging:0}: 不过 ...
- VelocityTracker
VelocityTracker顾名思义即速度跟踪,在android中主要应用于touch event, VelocityTracker通过跟踪一连串事件实时计算出 当前的速度,这样的用法在androi ...
- Node.js开发环境搭建
1.安装express npm install express -g 2.express33.6以后把express-generator分离出来了,所以还需安装express-generator,否则 ...
- MySQL 约束的讲解
MySQL 约束 作用:保证数据的完整性和一致性按照约束的作用范围分为:表级约束和行级约束.常见的约束类型包括: Not null(非空约束) Primary key (主键约束) Unique ke ...