BZOJ3155:Preprefix sum(线段树)
Description
.png)
Input
Output
对于每个询问操作,输出一行,表示所询问的SSi的值。
Sample Input
1 2 3 4 5
Query 5
Modify 3 2
Query 5
Sample Output
32
HINT
1<=N,M<=100000,且在任意时刻0<=Ai<=100000
Solution
直接用线段树维护一次前缀和的数组$S$,然后修改后缀,查询前缀。注意常数。
Code
#include<iostream>
#include<cstring>
#include<cstdio>
#define N (100009)
#define LL long long
using namespace std; struct Sgt{LL val,add;}Segt[N<<];
int n,m,x,y;
LL a[N],S[N];
char opt[]; inline int read()
{
int x=; char c=getchar();
while (c<'' || c>'') c=getchar();
while (c>='' && c<='') x=x*+c-'', c=getchar();
return x;
} void Pushdown(int now,int l,int r)
{
if (Segt[now].add)
{
int mid=(l+r)>>;
Segt[now<<].add+=Segt[now].add;
Segt[now<<|].add+=Segt[now].add;
Segt[now<<].val+=Segt[now].add*(mid-l+);
Segt[now<<|].val+=Segt[now].add*(r-mid);
Segt[now].add=;
}
} void Update(int now,int l,int r,int l1,int r1,LL k)
{
if (l>r1|| r<l1) return;
if (l1<=l && r<=r1)
{
Segt[now].add+=k;
Segt[now].val+=(r-l+)*k;
return;
}
int mid=(l+r)>>; Pushdown(now,l,r);
Update(now<<,l,mid,l1,r1,k);
Update(now<<|,mid+,r,l1,r1,k);
Segt[now].val=Segt[now<<].val+Segt[now<<|].val;
} LL Query(int now,int l,int r,int l1,int r1)
{
if (l>r1|| r<l1) return ;
if (l1<=l && r<=r1) return Segt[now].val;
int mid=(l+r)>>; Pushdown(now,l,r);
return Query(now<<,l,mid,l1,r1)+Query(now<<|,mid+,r,l1,r1);
} int main()
{
n=read(); m=read();
for (int i=; i<=n; ++i)
a[i]=read(), S[i]=S[i-]+a[i], Update(,,n,i,i,S[i]);
while (m--)
{
scanf("%s",&opt); x=read();
if (opt[]=='Q') printf("%lld\n",Query(,,n,,x));
else y=read(), Update(,,n,x,n,y-a[x]), a[x]=y;
}
}
BZOJ3155:Preprefix sum(线段树)的更多相关文章
- BZOJ 3155: Preprefix sum( 线段树 )
刷刷水题... 前缀和的前缀和...显然树状数组可以写...然而我不会, 只能写线段树了 把改变成加, 然后线段树维护前缀和, 某点p加, 会影响前缀和pre(x)(p≤x≤n), 对[p, n]这段 ...
- 2021.08.09 P4868 Preprefix sum(树状数组)
2021.08.09 P4868 Preprefix sum(树状数组) P4868 Preprefix sum - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题意: 前缀和(pr ...
- [bzoj3155]Preprefix sum(树状数组)
3155: Preprefix sum Time Limit: 1 Sec Memory Limit: 512 MBSubmit: 1183 Solved: 546[Submit][Status] ...
- 【BZOJ3638】Cf172 k-Maximum Subsequence Sum 线段树区间合并(模拟费用流)
[BZOJ3638]Cf172 k-Maximum Subsequence Sum Description 给一列数,要求支持操作: 1.修改某个数的值 2.读入l,r,k,询问在[l,r]内选不相交 ...
- CF280D k-Maximum Subsequence Sum(线段树)
在做这题时我一开始把\(tag\)写入了结构体 #include <iostream> #include <cstdio> #include <cstring> # ...
- BZOJ3155: Preprefix sum
题解: 写过树状数组搞区间修改和区间求和的就可以秒出吧... 代码: #include<cstdio> #include<cstdlib> #include<cmath& ...
- 线段树基础模板&&扫描线
线段树的单点更新+区间求和 hdu1166敌兵布阵 Input 第一行一个整数T,表示有T组数据. 每组数据第一行一个正整数N(N<=),表示敌人有N个工兵营地 ,接下来有N个正整数,第i个正整 ...
- [BZOJ3065]带插入区间K小值 解题报告 替罪羊树+值域线段树
刚了一天的题终于切掉了,数据结构题的代码真**难调,这是我做过的第一道树套树题,做完后感觉对树套树都有阴影了......下面写一下做题记录. Portal Gun:[BZOJ3065]带插入区间k小值 ...
- 树状数组【bzoj3155】: Preprefix sum
3155: Preprefix sum 题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=3155 把给出的a_i当成查分数组d_i做就可以了 ...
随机推荐
- node.js遇到的问题
1.cann't find module 'request' 不能找到’request' 模块 解决方法:找到项目的根路径,cd到该路径,运行命令 npm install request 2.no ...
- 【MongoDB学习-在.NET中的简单操作】
1.新建MVC项目, 管理NuGet包,进入下载MongDB.net库文件 2.新增项目DAL数据访问层,引用以下库文件: 3.C# 访问MongoDB通用方法类: using MongoDB.Dri ...
- MySQL,Oracle,PostgreSQL,mongoDB,Hive, SAP HANA 数据库web维护客户端管理工具
TreeDMS数据库管理系统使用JAVA开发,采用稳定通用的springMVC +JDBC架构,实现基于WEB方式对 MySQL,Oracle,PostgreSQL,mongoDB ,Hive, SA ...
- 函数表达式(JavaScript高程笔记)
函数声明 特点:函数声明提升(执行代码之前解析器会先读取函数声明,并使其在执行任何代码之前可用,意味着可以把函数声明放在调用语句之后) function functionName(arg0,arg1) ...
- python内置函数每日一学 -- any()
any(iterable) 官方文档解释: Return True if any element of the iterable is true. If the iterable is empty, ...
- JS UNIX 时间戳与时间格式转换
上代码,不多说了,这个没啥说的,记录一下: var date = new Date() // Date 2019-03-05T13:50:39.775Z // 获取1970 至今的毫秒数 var ti ...
- PHP批量导出数据为excel表格
之前用插件phoexcel写过批量导入数据,现在用到了批量导出,就记录一下,这次批量导出没用插件,是写出一个表格,直接输出 //$teacherList 是从数据库查出来的二维数组 $execlnam ...
- 正则匹配身份证有bug你知道么?
在开发中,我们需要验证用户的输入信息,多半采用正则验证,下面就是身份证证号的几种常用的正则表达式: var reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x) ...
- Boto Config File
Boto是AWS SDK for Python,可以通过pip安装,也可以下载源码直接安装.直接安装挺方便的. 安装后参照AWS给出的Sample Project,连接S3,遍历一下buckets,获 ...
- JSP指示元素<%@ %> 与指示类型
JSP提示元素 <%@ 指示类型 [属性="值"]%> 指示类型 指示类型有三种,分别是taglib.include.page taglib指示类型 用于引入标签库 ...