洛谷P3374(线段树)(询问区间和,支持单点修改)
//询问区间和,支持单点修改
#include <cstdio> using namespace std; const int maxn=; struct treetype
{
int l,r,sum;
}; treetype a[*maxn];
int num[maxn]; void build(int k,int l,int r)
{
a[k].l=l;a[k].r=r;
if (l==r)
{
a[k].sum=num[l];
return;
}
int mid=(l+r)>>,i=k<<;
build(i,l,mid);
build(i+,mid+,r);
a[k].sum=a[i].sum+a[i+].sum;
}
void change(int k,int x,int t)
{
if (a[k].l==a[k].r)
{
a[k].sum+=t;
return;
}
int mid=(a[k].l+a[k].r)>>,i=k<<;
if (x<=mid) change(i,x,t);
else change(i+,x,t);
a[k].sum=a[i].sum+a[i+].sum;
}
int query(int k,int x,int y)
{
if (x<=a[k].l && a[k].r<=y) return a[k].sum;
int mid=(a[k].l+a[k].r)>>,ans=,i=k<<;
if (x<=mid) ans=query(i,x,y);
if (mid<y) ans+=query(i+,x,y);
return ans;
} int main()
{
int n,m;
scanf("%d%d",&n,&m);
for (int i=;i<=n;i++) scanf("%d",&num[i]);
build(,,n);
//for (int i=1;i<=n*2;i++) printf("%d %d %d %d\n",i,a[i].l,a[i].r,a[i].sum);
for (int i=;i<=m;i++)
{
int t,x,y;
scanf("%d%d%d",&t,&x,&y);
if (t==) change(,x,y);
else printf("%d\n",query(,x,y));
}
return ;
}
洛谷P3374(线段树)(询问区间和,支持单点修改)的更多相关文章
- NOIP2017提高组Day2T3 列队 洛谷P3960 线段树
原文链接https://www.cnblogs.com/zhouzhendong/p/9265380.html 题目传送门 - 洛谷P3960 题目传送门 - LOJ#2319 题目传送门 - Vij ...
- 洛谷P3372线段树1
难以平复鸡冻的心情,虽然可能在大佬眼里这是水题,但对蒟蒻的我来说这是个巨大的突破(谢谢我最亲爱的lp陪我写完,给我力量).网上关于线段树的题解都很玄学,包括李煜东的<算法竞赛进阶指南>中的 ...
- 洛谷 P3372 线段树1
这是一道模板题 线段树介绍https://www.cnblogs.com/nvwang123/p/10420832.html #include<bits/stdc++.h> using n ...
- 洛谷P3373线段树模板2
题目:https://www.luogu.org/problemnew/show/P3373 带乘的线段树,更新时把加的标记也乘一下,然后取值时先乘后加. 代码如下: #include<iost ...
- 洛谷P3372线段树模板1——线段树
题目:https://www.luogu.org/problemnew/show/P3372 线段树模板. 代码如下: #include<iostream> #include<cst ...
- [ZOJ1610]Count the Colors(线段树,区间染色,单点查询)
题目链接:http://www.icpc.moe/onlinejudge/showProblem.do?problemCode=1610 题意:给一个长8000的绳子,向上染色.一共有n段被染色,问染 ...
- HDU 2795 Billboard 线段树,区间最大值,单点更新
Billboard Time Limit: 20000/8000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
- hdu3074 线段树求区间乘积(单点更新)
题意: 给你n个数,两种操作,(1) 把第b个数改成c (2)算出b-c的乘积,结果对1000000007取余. 思路: 线段树单点更新,简单题目,不多解释,具体看代码. #i ...
- 洛谷3372线段树模板题 对区间+k或者查询区间和
#include<bits/stdc++.h> using namespace std; typedef unsigned int ui; typedef long long ll; ty ...
- 洛谷P3373 线段树2(补上注释了)
毒瘤题.找了一下午+晚上的BUG,才发现原来query_tree写的是a%p; 真的是一个教训 UPD:2019.6.18 #include<iostream> #include<c ...
随机推荐
- 20160122 DataView RowFilter语法
原文出自:http://www.csharp-examples.net/dataview-rowfilter/ DataView RowFilter语法(c#) 这个例子描述了DataView.Row ...
- C++ 测量程序执行时间的办法
#include <time.h> clock_t start = clock(); //时间起始 /*待测试代码*/ clock_t end = clock(); //时间测试结束 co ...
- IQueryable不能使用异步方法的解决方案
---恢复内容开始--- 看见别人用Linq to Sql的Async好久了,我还没开始用,感觉太土了,跟不上潮流了,打开vs,就准备写个查询,然后发现我用一个IQueryable的对象,怎么都点不出 ...
- [LeetCode] 4. Median of Two Sorted Arrays(想法题/求第k小的数)
传送门 Description There are two sorted arrays nums1 and nums2 of size m and n respectively. Find the m ...
- Oracle-常见的错误
1.见下面的例子 create or replace procedure p_qr_stu_cid(s_id in number, c_id out number) as begin select t ...
- P3914染色计数
题目描述 有一颗\(N\)个节点的树,节点用\(1,2,\cdots,N\)编号.你要给它染色,使得相邻节点的颜色不同.有\(M\)种颜色,用\(1,2,\cdots,M\)编号.每个节点可以染\(M ...
- 20191101php日期练习
<?phpecho abs(-23);echo "<hr/>";echo date("t");echo "<hr/>&q ...
- 请列举出JS对象的几种创建方式?
javascript创建对象简单的说,无非就是使用内置对象或各种自定义对象,当然还可以用JSON:但写法有很多种,也能混合使用. 1.对象字面量的方式 var person={firstname:&q ...
- JS高级 — 函数的声明和表达式
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http ...
- linux典型应用对系统资源使用的特点