zzhengxi @ 2024-11-16 18:49:59
题目名:数据结构
题目描述
- 操作 1 将
a_i 加上x ,- 操作 2 求区间
[l,r] 的和。输入格式
第一行两个数
n,m 。第二行
n 个整数a_i 。接下来
m 行,每行三个整数:
1 i x
:操作 1。2 l r
:操作 2。输出格式
对于每个操作 2 输出一个整数。
样例 #1
样例输入 #1
5 3 1 2 3 4 5 2 1 5 1 5 1 2 1 5
样例输出 #1
15 16
提示
数据范围 测试点 分值 1\le n,m\le 10^4 subtask 1 30 1\le n,m\le 10^5 subtask 2 70 $1\leq i\leq n 保证所有输入数据均为正整数,范围在 int 以>内。
分割线
#include<bits/stdc++.h>
using namespace std;
int a[100010];
int s[100010];
int main(){
int n,m;
cin >> n >> m;
for(int i = 1 ; i <= n ; i ++)
cin >> a[i];
for(int i = 1 ; i <= n ; i ++)
s[i] = s[i - 1] + a[i];
/*for(int i = 1 ; i <= n ; i ++)
cout << s[i] << ' ';
cout << '\n';*/
while(m --){
int i,j,k;
cin >> i >> j >> k;
if(i == 1){
for(int x = j ; x <= n ; x ++)
s[x] += k;
}
else{
cout << s[k] - s[j - 1] << '\n';
}
}
return 0;
}
样例都过了,可是0分,我试着调试,可没有用
by XiaoYiii @ 2024-11-16 18:51:58
有没有一种可能,你的时间复杂度不对
by zzhengxi @ 2024-11-16 18:52:05
题目
不知道你们能看到题目吗
by zzhengxi @ 2024-11-16 18:52:52
@XiaoYiii我WA了
by KarmaticEnding @ 2024-11-16 18:54:00
@zzhengxi 这是一道模板题,用线段树和树状数组均可。(不过我觉得你应该都不会。。。)
你提交
by zzhengxi @ 2024-11-16 18:55:41
@light_dream我WA了
by Composite_Function @ 2024-11-16 18:57:00
@zzhengxi 你好像没开 long long
by zzhengxi @ 2024-11-16 18:57:45
@light_dream 你说的对。
只会用前缀和做的我:啊,谁来救救我
by KarmaticEnding @ 2024-11-16 18:58:18
@zzhengxi 我可能知道了……
你看,他只是说输入在
你试一下这个?
#include<bits/stdc++.h>
using namespace std;
int a[100010];
long long s[100010];
int main(){
int n,m;
cin >> n >> m;
for(int i = 1 ; i <= n ; i ++)
cin >> a[i];
for(int i = 1 ; i <= n ; i ++)
s[i] = s[i - 1] + a[i];
/*for(int i = 1 ; i <= n ; i ++)
cout << s[i] << ' ';
cout << '\n';*/
while(m --){
int i,j,k;
cin >> i >> j >> k;
if(i == 1){
for(int x = j ; x <= n ; x ++)
s[x] += k;
}
else{
cout << s[k] - s[j - 1] << '\n';
}
}
return 0;
}
by zzhengxi @ 2024-11-16 18:58:46
@Composite_Function ??? 为啥要开 long long
by Composite_Function @ 2024-11-16 18:59:42
@zzhengxi 因为加起来可能超过 int 的范围。