COGS 264. 数列操作
时间限制:1 s 内存限制:160 MB
【问题描述】
假设有一列数 {Ai }(1 ≤ i ≤ n) ,支持如下两种操作:
(1)将 A k 的值加 D 。( k, D 是输入的数)
(2) 输出 A s +A s+1 +…+A t 。( s, t 都是输入的数, S ≤ T )
根据操作要求进行正确操作并输出结果。
【输入格式】
输入文件第一行一个整数 n(0<=n<=100000) , 第二行为 n 个整数,表示 {A i } 的初始值。
第三行为一个整数 m(0<=m<=150000) ,表示操作数。 下接 m 行,每行描述一个操作,有如下两种情况:
ADD k d ( 表示将 A k 加 d , 1<=k<=n , d 为整数 )
SUM s t (表示输出 A s +…+A t )
【输出格式】
对于每一个 SUM 提问,输出结果
【输入输出样例】
输入:
4
1 4 2 3
3
SUM 1 3
ADD 2 50
SUM 2 3
输出:
7
56
线段树模版题
区间查询,单点修改
#include <iostream>
#include <cstdio>
#include <string> #define Max 100000 using namespace std;
int n,m,ans;
struct node
{
int l,r,dis;
int mid;
void get_mid(){mid=(l+r)>>;}
}tree[Max*+];
void up(int k)
{
tree[k].dis=tree[k<<].dis+tree[k<<|].dis;
}
void build(int l,int r,int k)
{
tree[k].l=l;
tree[k].r=r;
tree[k].get_mid();
if(l==r)
{
scanf("%d",&tree[k].dis);
return;
}
int mid=(l+r)>>;
build(l,mid,k<<);
build(mid+,r,k<<|);
up(k);
}
char cz[];
void add(int to,int v,int k)
{
if(tree[k].l==tree[k].r)
{
tree[k].dis+=v;
return;
}
int mid=tree[k].mid;
if(mid>=to) add(to,v,k<<);
else add(to,v,k<<|);
up(k);
}
int sum(int u,int v,int k)
{
if(tree[k].l==u&&tree[k].r==v)
{
return tree[k].dis;
}
if(v<=tree[k].mid) return sum(u,v,k<<);
else if(u>tree[k].mid) return sum(u,v,k<<|);
else
{
return sum(u,tree[k].mid,k<<)+sum(tree[k].mid+,v,k<<|);
}
}
int main()
{
freopen("shulie.in","r",stdin);
freopen("shulie.out","w",stdout);
scanf("%d",&n);
build(,n,);
scanf("%d",&m);
int u,v;
while(m--)
{
cin>>cz;
if(cz[]=='A')
{
scanf("%d%d",&u,&v);
add(u,v,);
}
else if(cz[]=='S')
{
scanf("%d%d",&u,&v);
printf("%d\n",sum(u,v,));
}
}
return ;
}
COGS 264. 数列操作的更多相关文章
- cogs 264. 数列操作 单点修改 区间查询
http://cogs.pro:8080/cogs/problem/problem.php?pid=pyNimmVeq 264. 数列操作 ★☆ 输入文件:shulie.in 输出文件:shu ...
- COGS.264.数列操作(分块 单点加 区间求和)
题目链接 #include<cmath> #include<cstdio> #include<cctype> #include<algorithm> u ...
- COGS 2638. 数列操作ψ 线段树
传送门 : COGS 2638. 数列操作ψ 线段树 这道题让我们维护区间最大值,以及维护区间and,or一个数 我们考虑用线段树进行维护,这时候我们就要用到吉司机线段树啦 QAQ 由于发现若干次an ...
- cogs 1317. 数列操作C 区间修改 区间查询
1317. 数列操作C ★★★ 输入文件:shuliec.in 输出文件:shuliec.out 简单对比时间限制:1 s 内存限制:128 MB [题目描述] 假设有一个长度为 n( ...
- cogs 1316. 数列操作B 区间修改 单点查询
1316. 数列操作B ★★ 输入文件:shulieb.in 输出文件:shulieb.out 简单对比时间限制:1 s 内存限制:128 MB [问题描述] 假设有一个大小为 n(n ...
- COGS.1317.数列操作c(分块 区间加 区间求和)
题目链接 #include<cmath> #include<cstdio> #include<cctype> #include<algorithm> u ...
- cogs 2632. [HZOI 2016] 数列操作d
2632. [HZOI 2016] 数列操作d ★★★ 输入文件:segment.in 输出文件:segment.out 简单对比时间限制:3 s 内存限制:512 MB [题目描述] ...
- [CJOJ2410]数列操作d
[CJOJ2410]数列操作d 标签: 线段树 题解 没时间写题了,我来嘴巴AC吧. 注意区间加的这个值不是 确定的,随着元素位置的变化而改变. 只需要能维护这个东西剩下的就很好做了. 那么\(x*( ...
- COGS 2633. [HZOI 2016] 数列操作e
[题目描述] 一个长度为n的序列,一开始序列数的权值都是0,有m次操作 支持两种操作, 1 L R x,给区间[L,R]内,第一个数加x,第二个数加2^2⋅x,第三个数加3^2⋅x...第R-L+1个 ...
随机推荐
- office2007下载地址
thunder://QUFodHRwOi8vNDYuZHVvdGUub3JnOjgwODAvb2ZmaWNlMjAwN3Byby56aXBaWg==thunder://QUFodHRwOi8vNTEu ...
- <正则吃饺子>:关于使用powerDesign连接oracle数据库,导出数据表结构(ER图吧)
最近做的项目中,没有完整的数据库表结构图(ER图),自己就根据服务器上oracle数据库和powerdesign整理一份,但是存在两个问题:1.没有把数据库表的相关备注弄下来:2.数据库表中的主外键关 ...
- 性能测试之Jmeter学习(二)
一.Jmeter的基本操作 1.添加|移除测试元件 2.加载和保存测试元件 3.配置测试对中的测试元件 4.保存测试计划 5.运行测试计划 6.终止测试 7.错误报告 二.Jmeter体系结构 注释: ...
- Asset Catalog Help (十一)---Removing Images and Sets
Removing Images and Sets Optimize the size of an asset catalog by removing unused images or sets. 通过 ...
- Eclipse中建立自己的类库,给不同的工程使用
win7 进入服务 开始 运行 services.msc 在多个工程当中,可能使用到相同的jar包,这时,如果我们建立一个自己的类库,该类库中存放着所有工程均需要的jar包,就可以免去重复导入的麻烦. ...
- 一个IP绑定多个域名的实现方法
方案一: 文字叙述: 具体步骤如下:比如讲apache服务器127.0.0.1 配置成 www.sohu.com 首先在http.conf文件中 做如下处理: ①关闭默认的 #DocumentRoot ...
- json 与pickle模块(序列化与反序列化))
一.什么是序列化(pickling): 我们把对象(变量)从内存中变成可存储或传输的过程称之为序列化. 序列化可以持久保存状态, 不会根据计算机断电或者重启程序,而使得之前的数据状态丢失.可以在下次程 ...
- mysql 自动备份命令
--1.全备 --single-transaction:基于此选项能实现热备InnoDB表 --databases要备份的表名mysqldump -u root -p --single-transa ...
- MongoDb 数据修补笔记
1. 2013.08.21 KS 数据有严重问题, 缺乏数十秒数据, serialNumber 乱序
- atcoder#073D(枚舉)
題目鏈接: http://arc073.contest.atcoder.jp/tasks/arc073_b 題意: 給出n, m兩個數, n是物品數目, m是背包容量, 接下來n行輸入, wi, vi ...