AOJ DSL_2_E Range Add Query (RAQ)

Posted You Siki

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AOJ DSL_2_E Range Add Query (RAQ)相关的知识,希望对你有一定的参考价值。

Range Add Query

数列 A = {a1,a2,...,an} に対し、次の2つの操作を行うプログラムを作成せよ。

  • add(s,t,x): as,as+1,...,at にxを加算する。
  • get(i): aiの値を出力する。

ただし、ai (i=1,2,...,n)は、0 で初期化されているものとする。

入力

n q
query1
query2
:
queryq

1行目にAの要素数n, クエリの数qが与えられる。続くq行に i 番目のクエリ queryi が与えられる。queryi は以下のいずれかの形式で与えられる。

0 s t x

または

1 i

各クエリの最初の数字は、クエリの種類を示し、‘0‘がadd(s,t,x)、‘1‘がget(i)を表す。

出力

getクエリについて、値を1行に出力せよ。

制約

  • 1≤n≤100000
  • 1≤q≤100000
  • 1≤stn
  • 1≤in
  • 0≤x≤1000

入力例 1

3 5
0 1 2 1
0 2 3 2
0 3 3 3
1 2
1 3

出力例 1

3
5

 

入力例 2

4 3
1 2
0 1 4 1
1 2

出力例 2

0
1

 
 

区间加 单点查

树状数组+差分 或 线段树

缩常数,继续打榜

 

 1 #include <cstdio>
 2 #include <cstdlib>
 3 
 4 #define siz 10000000
 5 
 6 char buf[siz], *bit = buf;
 7 
 8 inline int nextInt(void) {
 9     register int ret = 0;
10     register int neg = false;
11 
12     for (; *bit < 0; ++bit)
13         if (*bit == -)neg ^= true;
14 
15     for (; *bit >= 0; ++bit)
16         ret = ret * 10 + *bit - 0;
17 
18     return neg ? -ret : ret;
19 }
20 
21 int n, m;
22 
23 int pre[100005];
24 
25 inline int ask(int p) {
26     int ret = 0;
27     for (; p; p -= p&-p)
28         ret += pre[p];
29     return ret;
30 }
31 
32 inline void add(int p, int k) {
33     for (; p <= n; p += p&-p)
34         pre[p] += k;
35 }
36 
37 signed main(void) {
38     fread(buf, 1, siz, stdin);
39 
40     n = nextInt();
41     m = nextInt();
42 
43     for (int i = 1; i <= m; ++i) {
44         int c = nextInt();
45         if (c)    // get(i)
46             printf("%d\n", ask(nextInt()));
47         else    // add(s, t, x)
48         {
49             int x = nextInt();
50             int y = nextInt();
51             int k = nextInt();
52             add(x, k); add(y + 1, -k);
53         }
54     }
55 
56     //system("pause");
57 }

 

@Author: YouSiki

以上是关于AOJ DSL_2_E Range Add Query (RAQ)的主要内容,如果未能解决你的问题,请参考以下文章

AOJ DSL_2_D Range Update Query (RUQ)

架构师成长记_第八周_16_dsl搜索-过滤器 post_filter, 排序 sort, 高亮 highlight

AOJ GRL_1_C: All Pairs Shortest Path (Floyd-Warshall算法求任意两点间的最短路径)(Bellman-Ford算法判断负圈)(代码

ElasticSearch02_DSL特定语言matchbooltermtermsaggsfromsizerangesort排序查询

AOJ GRL_1_A: Single Source Shortest Path (Dijktra算法求单源最短路径,邻接表)

ElasticSearch