题目链接:http://codeforces.com/problemset/problem/835/C

题意:

在天空上划定一个直角坐标系,有 $n$ 颗星星,每颗星星都有坐标 $(x_i,y_i)$,星星初始亮度为 $s_i$,所有星星的亮度有个上限 $c$。

在时刻 $0$,每颗星星都是初始亮度 $s_i$,然后每过一个单位时间,星星亮度都增加 $1$,如果亮度一旦超过 $c$ 就立刻变为 $0$。

现在有 $q$ 次观察天空的机会,观察时刻为 $t_i$,观察的视野为左下角为 $(x_{1i},y_{1i})$,右上角为 $(x_{2i},y_{2i})$ 的平行于坐标轴的长方形。要求出每次观察时,在视野中的星星的亮度和。

题解:

首先星星亮度是周期变化的,周期长度是 $c+1$,所以我们只需要求出周期内每个时刻星星的亮度。

然后我们再用一个二维前缀和,就能 $O(1)$ 查出每个时刻任意长方形范围的星星亮度和。

注意一点,可能多个星星重叠在一个坐标上。

AC代码:

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+;
const int C=;
const int X=, Y=;
int n,q,c;
struct Star{
int x,y,s;
}star[N];
int sum[C][X][Y];
int main()
{
ios::sync_with_stdio();
cin.tie(), cout.tie(); cin>>n>>q>>c;
for(int i=;i<=n;i++) cin>>star[i].x>>star[i].y>>star[i].s; memset(sum,,sizeof(sum));
for(int t=;t<=c;t++)
{
for(int i=;i<=n;i++)
sum[t][star[i].x][star[i].y]+=(star[i].s+t)%(c+); for(int x=;x<=;x++)
for(int y=;y<=;y++)
sum[t][x][y]+=sum[t][x-][y]+sum[t][x][y-]-sum[t][x-][y-];
} for(int i=,t,x1,y1,x2,y2;i<=q;i++)
{
cin>>t>>x1>>y1>>x2>>y2;
cout<<sum[t%(c+)][x2][y2]-sum[t%(c+)][x2][y1-]-sum[t%(c+)][x1-][y2]+sum[t%(c+)][x1-][y1-]<<"\n";
}
}

Codeforces 835C - Star sky - [二维前缀和]的更多相关文章

  1. Star sky 二维前缀和

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

  2. C. Star sky 二维前缀和

    time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standa ...

  3. CodeForces 835C - Star sky | Codeforces Round #427 (Div. 2)

    s <= c是最骚的,数组在那一维开了10,第八组样例直接爆了- - /* CodeForces 835C - Star sky [ 前缀和,容斥 ] | Codeforces Round #4 ...

  4. Codeforces 838A - Binary Blocks(二维前缀和+容斥)

    838A - Binary Blocks 思路:求一下前缀和,然后就能很快算出每一小正方块中1的个数了,0的个数等于k*k减去1的个数,两个的最小值就是要加进答案的值. 代码: #include< ...

  5. Codeforces 1262E Arson In Berland Forest(二维前缀和+二维差分+二分)

     题意是需要求最大的扩散时间,最后输出的是一开始的火源点,那么我们比较容易想到的是二分找最大值,但是我们在这满足这样的点的时候可以发现,在当前扩散时间k下,以这个点为中心的(2k+1)2的正方形块内必 ...

  6. Codeforces 1080C 题解(思维+二维前缀和)

    题面 传送门 题目大意: 有一个黑白的棋盘,现在将棋盘上的一个子矩形全部染成黑色,另一个子矩形全部染成白色 求染完色后黑,白格子的总数 分析 我们可以发现,对于一个(1,1)到(x,y)的矩形,若xy ...

  7. C - Monitor CodeForces - 846D (二维前缀和 + 二分)

    Recently Luba bought a monitor. Monitor is a rectangular matrix of size n × m. But then she started ...

  8. openjudge1768 最大子矩阵[二维前缀和or递推|DP]

    总时间限制:  1000ms 内存限制:  65536kB 描述 已知矩阵的大小定义为矩阵中所有元素的和.给定一个矩阵,你的任务是找到最大的非空(大小至少是1 * 1)子矩阵. 比如,如下4 * 4的 ...

  9. COGS1752 [BOI2007]摩基亚Mokia(CDQ分治 + 二维前缀和 + 线段树)

    题目这么说的: 摩尔瓦多的移动电话公司摩基亚(Mokia)设计出了一种新的用户定位系统.和其他的定位系统一样,它能够迅速回答任何形如“用户C的位置在哪?”的问题,精确到毫米.但其真正高科技之处在于,它 ...

随机推荐

  1. OpenLayers典型部分概述

    中文学习:http://www.openlayers.cn/portal.php 原文地址:https://www.jianshu.com/p/e693711a7008 一 OpenLayers核心职 ...

  2. linux ssh

    SSH 是建立在应用层和传输层基础上的一种安全协议. SSH传输数据是加密的,可以有效防止传输过程被截取数据保障安全. SSH的数据是经过压缩的,所以可以加快传输的速度 1. 首先查看一下当前linu ...

  3. python和shell变量互相传递

    python -> shell: 1.环境变量 复制代码 代码如下: import os  var=123或var='123'os.environ['var']=str(var)  #envir ...

  4. default listener is not configured in grid infrastructure home

    Oracle Restart enable database creation requries Default listener configured and running in Grid Inf ...

  5. 前台报错:Uncaught TypeError: Cannot read property '0' of null

    错误现象: var div1=mycss[0].style.backgroundColor;  //这一行提示360和chrome提示:Uncaught TypeError: Cannot read  ...

  6. hdoj:2024

    #include <iostream> #include <string> #include <vector> using namespace std; int m ...

  7. Web - JSONP和同源策略漫谈

    0x00 前言 关于JSONP网上有很多文章了,我也是在拜读了别人的文章的基础上来写写自己的看法,这样可以加深自己印象,巩固一下学习效果.我们需要做的就是站在巨人的肩膀上眺望远方. 0x01 起 在W ...

  8. .Net Framework4.5.2 源码命名空间简析

    Miscosoft目前除.Net Core开源外,对于.Net4.5.1 , 4.5.2等后续版本同样开源.资源中包含sln,csproj等以方便我们在vs中打开它们,不过我们不能编译它,因为它缺少r ...

  9. 向json中添加新的熟悉或对象 Add new attribute (element) to JSON object using JavaScript

    How do I add new attribute (element) to JSON object using JavaScript? JSON stands for JavaScript Obj ...

  10. python模块和类的通用转换规则(2),三步转oo

    介绍模块和类怎么互相转换,不谈面向对象的继承 封装 多态等特点. 一个person_module模块,有人的基本属性和功能. person_module.py如下 # coding=utf8 name ...