zoukankan      html  css  js  c++  java
  • Codeforces Round #427 (Div. 2) C. Star sky(二维前缀和)

    题目链接:Codeforces Round #427 (Div. 2) C. Star sky

    题意:

    在一个二维平面上有n个星星,每个星星有一个初始的亮度,每过去一秒,星星的亮度变化为(s+1)%(c+1).

    现在有q个询问,问t秒后一个矩形区域的星星的总亮度为多少。

    题解:

    由于c不大,将每颗星星按照初始亮点分类,每一类在任意时间的亮度都是相同的,然后对应加一加就行了。

     1 #include<bits/stdc++.h>
     2 #define RT(l,r) (l+r|l!=r)
     3 #define mst(a,b) memset(a,b,sizeof(a))
     4 #define F(i,a,b) for(int i=a;i<=b;++i)
     5 #define ___ freopen("c:\code\in.txt","r",stdin);
     6 using namespace std;
     7 typedef long long ll;
     8 typedef pair<int,int>P;
     9 
    10 const int N=1e5+7;
    11 
    12 int n,q,c,mp[12][111][111];
    13 
    14 int sum(int v,int x,int y)
    15 {
    16     int ret = 0;
    17     for(int i = x;i > 0;i -= i&-i)
    18         for(int j = y;j > 0;j -= j&-j)
    19             ret += mp[v][i][j];
    20     return ret;
    21 }
    22 void add(int v,int x,int y,int val)
    23 {
    24     for(int i = x;i <= 100;i += i&-i)
    25         for(int j = y;j <= 100;j += j&-j)
    26             mp[v][i][j] += val;
    27 }
    28 
    29 int get(int v,int x1,int y1,int x2,int y2)
    30 {
    31     return sum(v,x2,y2)-sum(v,x1-1,y2)-sum(v,x2,y1-1)+sum(v,x1-1,y1-1);
    32 }
    33 
    34 int main()
    35 {
    36     scanf("%d%d%d",&n,&q,&c);
    37     F(i,1,n)
    38     {
    39         int x,y,v;
    40         scanf("%d%d%d",&x,&y,&v);
    41         add(v,x,y,1);
    42     }
    43     F(i,1,q)
    44     {
    45         int t,x1,y1,x2,y2;
    46         scanf("%d%d%d%d%d",&t,&x1,&y1,&x2,&y2);
    47         t%=(c+1);
    48         int ans=0;
    49         F(j,0,c)
    50         {
    51             int tmp=(t+j)%(c+1);
    52             ans+=tmp*get(j,x1,y1,x2,y2);
    53         }
    54         printf("%d
    ",ans);
    55     }
    56     return 0;
    57 }
    View Code
  • 相关阅读:
    08-12 NOIP模拟测试18
    08-09 NOIP模拟测试15
    08-11 NOIP模拟测试17
    08-10 NOIP模拟测试16
    08-07 NOIP模拟测试14
    08-03 NOIP模拟测试12
    [SDOI2011]拦截导弹
    08-01 NOIP模拟测试11
    零散知识点
    07-29 NOIP模拟测试10
  • 原文地址:https://www.cnblogs.com/bin-gege/p/7271599.html
Copyright © 2011-2022 走看看