C. Star sky Codeforces
2017-08-01 09:38
399 查看
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 (xi,
yi), 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 (x1i,
y1i) and the upper right — (x2i,
y2i). 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 n,
q, c (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
xi,
yi,
si (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
ti,
x1i,
y1i,
x2i,
y2i (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
Output
Input
Output
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.
题意:在坐标中给了你很多带有亮度的星星。这些星星随着时间做周期性变化。然后给出q个询问,每一个询问包含了查询区域的位置与当前时间,让你求出这段区域的总亮度是什么。
思路:
预处理到每一个从原点出发到每一个点所围的矩形内星星的个数。
dp【x】【y】【z】就是从1,1点出去到x,y所形成的矩阵中(包括边界)的亮度为z的星星的个数
所以dp【X】【Y】【Z】=dp【X】【Y】【Z】+dp【X-1】【Y】【C】+dp【X】【Y-1】【C】-DP【X-1】【Y-1】【C】
#include<bits/stdc++.h>
using namespace std;
int dp[120][120][11];
int n,q,c;
void init()
{
for(int i=1; i<=100; i++)
for(int j=1; j<=100; j++)
for(int c=0; c<=10; c++)
dp[i][j][c]+=dp[i-1][j][c]+dp[i][j-1][c]-dp[i-1][j-1][c];
}
int main()
{
while(scanf("%d%d%d",&n,&q,&c)!=EOF)
{
memset(dp,0,sizeof(dp));
for(int i=0; i<n; i++)
{
int x,y,b;
scanf("%d%d%d",&x,&y,&b);
dp[x][y][b]++;
}
init();
for(int j=0; j<q; j++)
{
int x,y,x1,y1,t;
int ans=0;
int sum=0;
scanf("%d%d%d%d%d",&t,&x,&y,&x1,&y1);
for(int i=0; i<=c; i++)
{
ans=dp[x1][y1][i]+dp[x-1][y-1][i]-dp[x-1][y1][i]-dp[x1][y-1][i];
ans*=(t+i)%(c+1);
sum+=ans;
}
printf("%d\n",sum);
}
}
}
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 (xi,
yi), 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 (x1i,
y1i) and the upper right — (x2i,
y2i). 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 n,
q, c (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
xi,
yi,
si (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
ti,
x1i,
y1i,
x2i,
y2i (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
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
3 0 3
Input
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
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.
题意:在坐标中给了你很多带有亮度的星星。这些星星随着时间做周期性变化。然后给出q个询问,每一个询问包含了查询区域的位置与当前时间,让你求出这段区域的总亮度是什么。
思路:
预处理到每一个从原点出发到每一个点所围的矩形内星星的个数。
dp【x】【y】【z】就是从1,1点出去到x,y所形成的矩阵中(包括边界)的亮度为z的星星的个数
所以dp【X】【Y】【Z】=dp【X】【Y】【Z】+dp【X-1】【Y】【C】+dp【X】【Y-1】【C】-DP【X-1】【Y-1】【C】
#include<bits/stdc++.h>
using namespace std;
int dp[120][120][11];
int n,q,c;
void init()
{
for(int i=1; i<=100; i++)
for(int j=1; j<=100; j++)
for(int c=0; c<=10; c++)
dp[i][j][c]+=dp[i-1][j][c]+dp[i][j-1][c]-dp[i-1][j-1][c];
}
int main()
{
while(scanf("%d%d%d",&n,&q,&c)!=EOF)
{
memset(dp,0,sizeof(dp));
for(int i=0; i<n; i++)
{
int x,y,b;
scanf("%d%d%d",&x,&y,&b);
dp[x][y][b]++;
}
init();
for(int j=0; j<q; j++)
{
int x,y,x1,y1,t;
int ans=0;
int sum=0;
scanf("%d%d%d%d%d",&t,&x,&y,&x1,&y1);
for(int i=0; i<=c; i++)
{
ans=dp[x1][y1][i]+dp[x-1][y-1][i]-dp[x-1][y1][i]-dp[x1][y-1][i];
ans*=(t+i)%(c+1);
sum+=ans;
}
printf("%d\n",sum);
}
}
}
相关文章推荐
- Codeforces 835C - Star sky 【预处理前缀和】
- CodeForces 835 C.Star sky(水~)
- Codeforces 853C Star sky(二维前缀和)
- codeforces 835-C. Star sky(dp+前缀和)
- Codeforces 835C-Star sky
- Codeforces 835 C Star sky(前缀和)
- CodeForces 835C - Star sky | Codeforces Round #427 (Div. 2)
- CodeForces - 835C Star sky(dp)
- CodeForces - 835C Star sky(预处理加二维处理)
- 【Codeforces 835 C. Star sky】+ dp
- CodeForces - 835C Star sky (前缀和)
- Codeforces 835C Star sky【思维+暴力预处理二维前缀和】
- CodeForces - 835C - Star sky (dp + 周期)
- codeforces 835C Star sky(二维树状数组)
- codeforces 669B B. Little Artem and Grasshopper(水题)
- Codeforces 723E One-Way Reform(欧拉回路)
- CodeForces 471C - MUH and House of Cards(推导)
- Codeforces 432D Prefixes and Suffixes(KMP+dp)
- CodeForces 632E Thief in a Shop
- CodeForces 277A Learning Languages (并查集)