CodeForces
来源:互联网 发布:java打印直角三角形 编辑:程序博客网 时间:2024/06/05 02:15
题目大意:
给你一个 100*100 的地图,然后告诉你这个图中有若干个点有星星,每个星星有一个初始亮度 s ,每个星星的亮度随着时间的变化而周期性变化。现在要进行 1e5 次查询,每次查询给你一个矩阵,和一个时间 t ,让你求 t 时刻该矩阵内每个星星乘他们的亮度的和。
注:这里有一个坑点就是,每个点会有多个星星,因为这个卡了好久。其实看数据范围也能看出来, 100*100 的格子里要放 1e5 的星星,肯定有重叠的。
分析:
确定状态:
dp [ i ] [ j ] [ k ] 表示点(i,j)和点(0,0)确定的矩阵里面,0时刻亮度为 k 的星星个数。(包括边界)
状态转移方程:
dp [ i ] [ j ] [ k ] = dp [ i ] [ j-1 ] [ k ] + dp [ i-1 ] [ j ] [ k ] - dp [ i-1 ] [ j-1 ] [ k ] + num [ i ] [ j ] [ k ] ;
边界条件:
dp [ 0 ] [ j ] [ k ] = 0 ;(0<=j<1e5,0<=k<=10)
dp [ i ] [ 0 ] [ k ] = 0 ;(0<=i<1e5,0<=k<=10)
代码:
#include<bits/stdc++.h>using namespace std;int n,q,c;int num[105][105][13]={0};int mapx[105][105];int main(){ scanf("%d%d%d",&n,&q,&c); /* for(int i=0;i<105;i++) { for(int j=0;j<105;j++) { mapx[i][j]=-1; } }*/ int temp_x,temp_y,temp_s; for(int i=0;i<n;i++) { scanf("%d%d%d",&temp_x,&temp_y,&temp_s); //temp_s%=(c+1); num[temp_x+1][temp_y+1][temp_s]++; } for(int i=1;i<105;i++) { for(int j=1;j<105;j++) { for(int k=0;k<=c;k++) { num[i][j][k]+=(num[i-1][j][k]+num[i][j-1][k]-num[i-1][j-1][k]); } //if(mapx[i][j]!=-1)num[i][j][mapx[i][j]]++; } } int t,x1,y1,x2,y2; for(int i=0;i<q;i++) { //int temp_t; scanf("%d%d%d%d%d",&t,&x1,&y1,&x2,&y2); x1++;y1++;x2++;y2++; //t+=temp_t; t%=(c+1); int tal=0; for(int k=0;k<=c;k++) { //int w=(k+c-t)%(c+1); int ans = num[x2][y2][k] - num[x2][y1-1][k] - num[x1-1][y2][k] + num[x1-1][y1-1][k]; if(ans>0) tal = tal + ans * ((k+t)%(c+1)); } printf("%d\n",tal); }}
阅读全文
0 0
- codeforces~~~
- Codeforces
- codeforces
- Codeforces
- codeforces
- codeforces
- Codeforces
- Codeforces
- CodeForces
- CodeForces
- CodeForces
- CodeForces
- CodeForces
- Codeforces
- Codeforces
- Codeforces
- Codeforces
- Codeforces
- Android7.0的FileProvider适配
- HDU 1709 (母函数)
- phantomjs安装方法
- tomcat startup.bat的闪退问题
- 最常用的11大AJAX开发框架
- CodeForces
- HNUST 1454: 挑战ACM迷宫(BFS+贪心)
- BlockingQueue(阻塞队列)详解
- Jedis的使用
- 第八篇:JAVA类加载机制源码分析
- 新版nessus 6.10.7 API 接口,可实现自动扫描,自定义入库操作
- Stack-----150. Evaluate Reverse Polish Notation
- mysql(四/1)表的操作
- 约瑟夫环(Java)