嵊州普及Day6T3

题意:n个点,对于q个询问,有t秒及一个矩形的范围。在此矩形内的数每秒加1,若等于c,则下一秒变为0。

思路:t可能很大,%c+1就可以了。然后一个一个加起来就可以了。

见代码:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
int n,q,c,a[101][101],x,y,x2,y2,t,ans;
bool flag[101][101];
int main()
{
    freopen("sun.in.txt","r",stdin);
    freopen("sun.out.txt","w",stdout);
    cin>>n>>q>>c;
    for(int i=1;i<=n;i++)
    {
        cin>>x>>y;
        cin>>a[x][y];
        flag[x][y]=true;
    }
    for(int j=1;j<=q;j++)
    {
        ans=0;
        cin>>t>>x>>y>>x2>>y2;
        t%=(c+1);
        for(int i=x;i<=x2;i++)
            for(int k=y;k<=y2;k++)
            {
                if(flag[i][k]==true)
                {
                    int xx=a[i][k]+t;
                    if(xx>c)
                    xx-=c+1;
                    ans+=xx;
                }
            }
        cout<<ans<<endl;
    }
    return 0;
}

 好题哉!!!

posted @ 2019-07-16 17:00  青殇  阅读(92)  评论(0编辑  收藏  举报