您的位置:首页 > 其它

bzoj 3212: Pku3468 A Simple Problem with Integers

2017-11-11 00:18 387 查看

3212: Pku3468 A Simple Problem with Integers

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 2019  Solved: 879

[Submit][Status][Discuss]

Description

You have N integers, A1, A2, ... , AN. You need to deal with two kinds of operations. One type of operation is to add some given number to each number in a given interval.
The other is to ask for the sum of numbers in a given interval. 

Input

The first line contains two numbers N and Q. 1 ≤ N,Q ≤ 100000. 

The second line contains N numbers, the initial values of A1, A2, ... , AN. -1000000000 ≤ Ai ≤ 1000000000. 

Each of the next Q lines represents an operation. 

"C a b c" means adding c to each of Aa, Aa+1, ... , Ab. -10000 ≤ c ≤ 10000. 

"Q a b" means querying the sum of Aa, Aa+1, ... , Ab. 

Output

You need to answer all Q commands in order. One answer in a line. 

Sample Input

10 5

1 2 3 4 5 6 7 8 9 10

Q 4 4

Q 1 10

Q 2 4

C 3 6 3

Q 2 4

Sample Output

4

55

9

15

做个水题冷静一下。。。

就是区间加和区间查询

直接暴力

#include<stdio.h>
#define LL long long
LL a[100005], sum[100005];
int main(void)
{
char ch;
int n, q, i, x, y, t;
scanf("%d%d", &n, &q);
for(i=1;i<=n;i++)
{
scanf("%lld", &a[i]);
sum[i] = sum[i-1]+a[i];
}
while(q--)
{
scanf(" %c", &ch);
if(ch=='Q')
{
scanf("%d%d", &x, &y);
printf("%lld\n", sum[y]-sum[x-1]);
}
else
{
scanf("%d%d%d", &x, &y, &t);
for(i=x;i<=n;i++)
{
if(i<=y)
a[i] += t;
sum[i] = sum[i-1]+a[i];
}
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: