前缀和-Big Water Problem (牛客)
2024-09-06 21:01:29
链接:https://ac.nowcoder.com/acm/problem/15164
题目描述
给一个数列,会有多次询问,对于每一次询问,会有两种操作:
1:给定两个整数x, y, 然后在原数组的第x位置上加y;
2:给定两个整数l,r,然后输出数组从第l位加到第r位数字的和并换行
输入描述:
第一行有两个整数n, m(1 <= n, m <= 100000)代表数列的长度和询问的次数
第二行n个数字,对于第i个数字a[i],(0<=a[i]<=100000)。
接下来m行,每一行有三个整数f, x, y。第一个整数f是1或者是2,代表操作类型,如果是1,接下来两个数x,y代表第x的位置上加y,如果是2,则求x到y的和,保证数据合法。
输出描述:
输出每次求和的结果并换行
示例1
输出
64
#include "bits/stdc++.h"
using namespace std;
typedef long long ll;
typedef pair<int,int> pr;
inline int read() {int x=,f=;char c=getchar();while(c!='-'&&(c<''||c>''))c=getchar();if(c=='-')f=-,c=getchar();while(c>=''&&c<='')x=x*+c-'',c=getchar();return f*x;} const int maxn = 1e6+;
const int inf = 0x3f3f3f3f;
const int mod = 1e8+;
int a[maxn];
int sum[maxn];
int x[maxn];
int y[maxn];
int z[maxn];
int main()
{
int n,m;
cin>>n>>m;
for(int i=;i<=n;i++){
cin>>a[i];
}
sum[]=;
for(int i=;i<=n;i++){
sum[i]=sum[i-]+a[i];
}
int f,u,v;
int k=;
while(m--){
ll ans=;
scanf("%d%d%d",&f,&u,&v);
if(f==){
y[k]=u;
z[k]=v;
k++;
}
if(f==){
for(int i=;i<k;i++){
if(y[i]<=v&&y[i]>=u){
ans+=z[i];
}
}
ans+=sum[v]-sum[u-];
cout<<ans<<endl;
}
}
return ;
}
最新文章
- 仿喜马拉雅实现ListView添加头布局和脚布局
- jquery中的ajax参数说明
- http 301和302的区别
- hdu5009 Paint Pearls (DP+模拟链表)
- 从官方ROM中提取原生APK
- uploads 上传图片
- mysql CASE WHEN的基础和多种用法
- (转)xcode报Could not find a storyboard named...错误的解决办法
- PLSQL的一些事儿
- 传统业务上云:跨AZ容灾架构解析
- 使用cAdvisor+Influxdb+Grafana监控系统
- event &; signals &; threads
- js中__proto__和prototype constructor 的区别和关系
- java编译器知识
- 01Tensorflow学习之Tensorflow基本介绍
- git查看各个branch之间的关系图
- 解决IE8不支持console
- window连接linux共享
- git命令用法
- ACM1258邻接表
热门文章
- mybatis报错:A query was run and no Result Maps were found for the Mapped Statement、、Property [login_ip] not found on type [com.thinkgem.jeesite.common.permission.entity.PremissUser]问题解决
- python 中模块的版本号
- 【转载】C/C++编译过程分析
- php preg正则表达式的组成部分
- Linux07——安装MySQL
- 概率DP lightoj 1265
- opencv编译静态库时选择MD模式无效的原因
- 初探日志分析常用的linux命令
- Go时间
- 《C语言程序设计》王希杰 课后答案