CodeForces 835 C.Star sky(水~)
2017-08-07 09:44
393 查看
Description
在二维平面有n个星星,其亮度上限为c,第i个星星坐标为(x[i],y[i]),初始亮度为s[i],每秒亮度增加1,当亮度为c时下一秒亮度为0,q次查询,每次查询一个子矩阵中的星星在第t秒的亮度之和
Input
第一行输入三个整数n,q,c分别表示星星个数,查询数以及星星亮度上限,之后n行第i行输入第i个星星的坐标和初始亮度x[i],y[i],s[i],最后q行每行输入五个整数t,x1,y1,x2,y2表示查询以(x1,y1)为左上角,(x2,y2)为右上角的子矩阵中星星在第t秒的亮度之和(1<=n,q<=1e5,1<=c<=10,1<=x[i],y[i],x1,y1,x2,y2<=100,0<=s[i]<=c,0<=t<=1e9)
Output
对于每次查询输出一个答案
Sample 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
Sample Output
3
0
3
Solution
num[i][j][k]表示前i行前j列初始亮度为k的星星个数,对于每次查询,该子矩阵中初始亮度为k的星星个数为num[x2][y2][k]+num[x1-1][y1-1][k]-num[x2][y1-1][k]-num[x1-1][y2][k],t秒的时候这些星星亮度为(k+t)%(c+1),枚举k累加该值即为该次查询的答案
Code
在二维平面有n个星星,其亮度上限为c,第i个星星坐标为(x[i],y[i]),初始亮度为s[i],每秒亮度增加1,当亮度为c时下一秒亮度为0,q次查询,每次查询一个子矩阵中的星星在第t秒的亮度之和
Input
第一行输入三个整数n,q,c分别表示星星个数,查询数以及星星亮度上限,之后n行第i行输入第i个星星的坐标和初始亮度x[i],y[i],s[i],最后q行每行输入五个整数t,x1,y1,x2,y2表示查询以(x1,y1)为左上角,(x2,y2)为右上角的子矩阵中星星在第t秒的亮度之和(1<=n,q<=1e5,1<=c<=10,1<=x[i],y[i],x1,y1,x2,y2<=100,0<=s[i]<=c,0<=t<=1e9)
Output
对于每次查询输出一个答案
Sample 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
Sample Output
3
0
3
Solution
num[i][j][k]表示前i行前j列初始亮度为k的星星个数,对于每次查询,该子矩阵中初始亮度为k的星星个数为num[x2][y2][k]+num[x1-1][y1-1][k]-num[x2][y1-1][k]-num[x1-1][y2][k],t秒的时候这些星星亮度为(k+t)%(c+1),枚举k累加该值即为该次查询的答案
Code
#include<cstdio> #include<iostream> #include<cstring> #include<algorithm> #include<cmath> #include<vector> #include<queue> #include<map> #include<set> #include<ctime> using namespace std; typedef long long ll; typedef pair<int,int>P; const int INF=0x3f3f3f3f,maxn=101; int n,q,c,num[maxn][maxn][12]; int main() { while(~scanf("%d%d%d",&n,&q,&c)) { c++; int sum=0; memset(num,0,sizeof(num)); while(n--) { int x,y,s; scanf("%d%d%d",&x,&y,&s); num[x][y][s]++,sum+=s; } for(int k=0;k<c;k++) for(int i=1;i<=100;i++) for(int j=1;j<=100;j++) num[i][j][k]+=num[i-1][j][k]+num[i][j-1][k]-num[i-1][j-1][k]; while(q--) { int t,x1,y1,x2,y2; scanf("%d%d%d%d%d",&t,&x1,&y1,&x2,&y2); int ans=0; for(int k=0;k<c;k++) { int cnt=num[x2][y2][k]+num[x1-1][y1-1][k]-num[x2][y1-1][k]-num[x1-1][y2][k]; ans+=cnt*((k+t)%c); } printf("%d\n",ans); } } return 0; }
相关文章推荐
- codeforces 835-C. Star sky(dp+前缀和)
- Codeforces 835 C Star sky(前缀和)
- 【Codeforces 835 C. Star sky】+ dp
- Codeforces 835 D Palindromic characteristics(区间DP)
- CodeForces - 835C Star sky (前缀和)
- codeforces 835 C Star sky
- Codeforces 835C Star sky【思维+暴力预处理二维前缀和】
- codeforces 835 a Key races
- codeforces 835C Star sky(二维树状数组)
- Codeforces 835 C Star sky
- Codeforces 835 D Palindromic characteristics 区间dp
- Codeforces 835C - Star sky 【预处理前缀和】
- CodeForces 835 A.Key races(水~)
- CodeForces 835 B.The number on the board(贪心)
- CodeForces - 835C - Star sky (dp + 周期)
- Codeforces 835 B The number on the board
- Codeforces 853C Star sky(二维前缀和)
- Codeforces Round #427 (Div. 2) Problem A Key races (Codeforces 835 A)
- Codeforces 835C-Star sky
- Codeforces 835 A Key races