Star sky 二维前缀和

Posted qldabiaoge

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Star sky 二维前缀和相关的知识,希望对你有一定的参考价值。

C. Star sky
time limit per test
2 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output

The Cartesian coordinate system is set in the sky. There you can see n stars, the i-th has coordinates (xiyi), a maximum brightness c, equal for all stars, and an initial brightness si (0?≤?si?≤?c).

Over time the stars twinkle. At moment 0 the i-th star has brightness si. Let at moment t some star has brightness x. Then at moment (t?+?1) this star will have brightness x?+?1, if x?+?1?≤?c, and 0, otherwise.

You want to look at the sky q times. In the i-th time you will look at the moment ti and you will see a rectangle with sides parallel to the coordinate axes, the lower left corner has coordinates (x1iy1i) and the upper right — (x2iy2i). For each view, you want to know the total brightness of the stars lying in the viewed rectangle.

A star lies in a rectangle if it lies on its border or lies strictly inside it.

Input

The first line contains three integers nqc (1?≤?n,?q?≤?105, 1?≤?c?≤?10) — the number of the stars, the number of the views and the maximum brightness of the stars.

The next n lines contain the stars description. The i-th from these lines contains three integers xiyisi (1?≤?xi,?yi?≤?100, 0?≤?si?≤?c?≤?10) — the coordinates of i-th star and its initial brightness.

The next q lines contain the views description. The i-th from these lines contains five integers tix1iy1ix2iy2i (0?≤?ti?≤?109, 1?≤?x1i?<?x2i?≤?100, 1?≤?y1i?<?y2i?≤?100) — the moment of the i-th view and the coordinates of the viewed rectangle.

Output

For each view print the total brightness of the viewed stars.

Examples
input
Copy
2 3 3
1 1 1
3 2 0
2 1 1 2 2
0 2 1 4 5
5 1 1 5 5
output
Copy
3
0
3
input
Copy
3 4 5
1 1 2
2 3 0
3 3 1
0 1 1 100 100
1 2 2 4 4
2 2 1 4 7
1 50 50 51 51
output
Copy
3
3
5
0
Note

Let‘s consider the first example.

At the first view, you can see only the first star. At moment 2 its brightness is 3, so the answer is 3.

At the second view, you can see only the second star. At moment 0 its brightness is 0, so the answer is 0.

At the third view, you can see both stars. At moment 5 brightness of the first is 2, and brightness of the second is 1, so the answer is 3.

 

http://codeforces.com/contest/835/problem/C

这题就是暴力二位前缀和

 

 1 #include <cstdio>
 2 #include <cstring>
 3 #include <queue>
 4 #include <cmath>
 5 #include <algorithm>
 6 #include <set>
 7 #include <iostream>
 8 #include <map>
 9 #include <stack>
10 #include <string>
11 #include <vector>
12 #define  pi acos(-1.0)
13 #define  eps 1e-6
14 #define  fi first
15 #define  se second
16 #define  lson l,m,rt<<1
17 #define  rson m+1,r,rt<<1|1
18 #define  bug         printf("******
")
19 #define  mem(a,b)    memset(a,b,sizeof(a))
20 #define  fuck(x)     cout<<"["<<x<<"]"<<endl
21 #define  f(a)        a*a
22 #define  sf(n)       scanf("%d", &n)
23 #define  sff(a,b)    scanf("%d %d", &a, &b)
24 #define  sfff(a,b,c) scanf("%d %d %d", &a, &b, &c)
25 #define  sffff(a,b,c,d) scanf("%d %d %d %d", &a, &b, &c, &d)
26 #define  pf          printf
27 #define  FRE(i,a,b)  for(i = a; i <= b; i++)
28 #define  FREE(i,a,b) for(i = a; i >= b; i--)
29 #define  FRL(i,a,b)  for(i = a; i < b; i++)
30 #define  FRLL(i,a,b) for(i = a; i > b; i--)
31 #define  FIN         freopen("DATA.txt","r",stdin)
32 #define  gcd(a,b)    __gcd(a,b)
33 #define  lowbit(x)   x&-x
34 #pragma  comment (linker,"/STACK:102400000,102400000")
35 using namespace std;
36 typedef long long LL;
37 const int maxn = 1e6 + 10;
38 int n, q, c, sum[105][105][12];
39 
40 int main() {
41     sfff(n, q, c);
42     for (int i = 0, x, y, s ; i < n ; i++) {
43         sfff(x, y, s);
44         sum[x][y][s]++;
45     }
46     for (int i = 1 ; i <= 100 ; i++)
47         for (int j = 1 ; j <= 100 ; j++)
48             for (int k = 0 ; k <= c ; k++)
49                 sum[i][j][k] += sum[i - 1][j][k] + sum[i][j - 1][k] - sum[i - 1][j - 1][k];
50     int  t, x1, y1, x2, y2;
51     while(q--) {
52         sf(t);
53         sffff(x1,y1,x2,y2);
54         int ans = 0;
55         for (int i = 0 ; i <= c ; i++)
56             ans += (sum[x2][y2][i] - sum[x1 - 1][y2][i] - sum[x2][y1 - 1][i] + sum[x1 - 1][y1 - 1][i]) * ((i + t) % (c + 1));
57         printf("%d
", ans);
58     }
59     return 0;
60 }

 


















以上是关于Star sky 二维前缀和的主要内容,如果未能解决你的问题,请参考以下文章

codeforces-835C. Star sky(维护二维前缀和,dp)

Codeforces Round #427 (Div. 2) Problem C Star sky (Codeforces 835C) - 前缀和

Codeforces 835C-Star sky

leetcode_1292. Maximum Side Length of a Square with Sum Less than or Equal to Threshold_[二维前缀和](代码片段

codeforces 835C Star sky

二维前缀和 - 算法学习 - 输入输出优化