题目

Description

Uthuso 的核反应失控了,她在地灵殿释放了几颗大核弹.地灵殿可以看做一个大小为n*m 的矩阵.一颗大小为k 的核弹,对于任意一个与爆炸中心曼哈顿距离小于k 的地区,会造成(k-(该地区到爆炸中心曼哈顿距离))*(该地区的价值)的损失.现在,地灵殿方面想统计一下每颗核弹造成的损失,请你来帮忙计算.

Input

从flare.in 中读入数据第一行为两个整数n,m接下来n 行每行m 个整数,代表第i 行第j 个区域的价值接下来一行为一个整数Q,代表核弹的数目.接下来Q 行每行三个整数x,y,k,代表第i 颗核弹的爆炸中心以及它的大小.

Output

输出到文件flare.out 中Q 行,每行1 个整数,代表第i 颗核弹的损失.

Sample Input

5 51 2 3 4 59 8 7 6 52 3 3 3 36 6 6 6 61 4 2 8 55
1 1 15 5 13 3 32 2 24 2 2

Sample Output

1
5
833731

Data Constraint

对于30%的数据,满足n<=300,m<=300,Q<=300对于60%的数据,满足n<=300,m<=300对于100%的数据,满足1<=n<=2000,1<=m<=2000,1<=Q<=200000,1<=k<=min(x,y,n-x+1,m-y+1),1<=每个区域的价值<=1000000

题解

十分猎奇的前缀和乱搞
设sum1[i][j]为sum[i][j]的前缀和,sl,sr,ss为三个不同方向的sum1的前缀和(看程序吧好难解释),然后乱搞就可以了

贴代码

#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<cmath>
#define fo(i,a,b) for(i=a;i<=b;i++)
#define ll long longusing namespace std;const int maxn=2005;ll sum[maxn][maxn],sum1[maxn][maxn],sl[maxn][maxn],sr[maxn][maxn],a[maxn][maxn],ss[maxn][maxn];
ll i,j,k,l,n,m,x,y,ans,q,z;
char ch;int read(){
    int x=0;
    ch=getchar();
    while (ch<'0' || ch>'9') ch=getchar();
    while (ch>='0' && ch<='9'){        x=x*10+ch-48;
        ch=getchar();
    }
    return x;
}ll sumr(int x1,int y1,int x2,int y2){
    if (y1<=0) return 0;
    if (x1<=x2) return 0;
    while (y2<0){        x2++; y2++;
    }
    return sr[x1][y1]-sr[x2][y2];
}
ll suml(int x1,int y1,int x2,int y2){
    while (y1<=0){        x1--; y1++;
    }
    if (x1<x2) return 0;
    return sl[x1][y1]-sl[x2][y2];
}
void geans(int x,int y,int k){
    k--;
    ans=ans+sumr(x,y+k,x-k-1,y-1);
    ans=ans+suml(x,y-k-2,x-k-1,y-1);
    ans=ans+suml(x+k,y,x,y+k);
    ans=ans+sumr(x+k,y-2,x,y-k-2);
    ans=ans-2*(ss[x+k][y-1]-ss[x-k-1][y-1]);
}
int main(){
    freopen("t1.in","r",stdin);
    freopen("t1.out","w",stdout);
    n=read(); m=read();
    fo(i,1,n){        fo(j,1,m){            a[i][j]=read();
            sum[i][j]=sum[i][j-1]+a[i][j];
            sum1[i][j]=sum1[i][j-1]+sum[i][j];
        }
    }
    fo(i,1,n){        fo(j,1,m){            sl[i][j]=sl[i-1][j+1]+sum1[i][j];
            if (j) sr[i][j]=sr[i-1][j-1]+sum1[i][j];
            ss[i][j]=ss[i-1][j]+sum1[i][j];
        }
    }
    q=read();
    fo(i,1,q){        x=read(); y=read(); z=read();
        ans=0;
        geans(x,y,z);
        printf("%lld\n",ans);
    }
    return 0;
}

jzoj5410【NOIP2017提高A组集训10.22】小型耀斑相关推荐

  1. 【JZOJ5410】【NOIP2017提高A组集训10.22】小型耀斑

    Description Uthuso 的核反应失控了,她在地灵殿释放了几颗大核弹.地灵殿可以看做一个大小为n*m 的矩阵.一颗大小为k 的核弹,对于任意一个与爆炸中心曼哈顿距离小于k 的地区,会造成( ...

  2. [JZOJ5410]【NOIP2017提高A组集训10.22】小型耀斑 (口胡)

    Description Uthuso 的核反应失控了,她在地灵殿释放了几颗大核弹.地灵殿可以看做一个大小为n*m 的矩阵.一颗大小为k 的核弹,对于任意一个与爆炸中心曼哈顿距离小于k 的地区,会造成( ...

  3. JZOJ 5415. 【NOIP2017提高A组集训10.22】公交运输

    Description 城市中有一条长度为n的道路,每隔1的长度有一个公交车站,编号从0到n,学校在0号车站的位置.其中每个公交车站(除了n号车站)有两个属性ci和vi,代表从这个公交车站出发的公交车 ...

  4. JZOJ 5414. 【NOIP2017提高A组集训10.22】幸运值

    Description 校庆志愿者小Z在休息时间和同学们玩卡牌游戏.一共有n张卡牌,每张卡牌上有一个数Ai,每次可以从中选出k张卡牌.一种选取方案的幸运值为这k张卡牌上数的异或和.小Z想知道所有选取方 ...

  5. 【JZOJ 5410】【NOIP2017提高A组集训10.22】小型耀斑

    Description Uthuso 的核反应失控了,她在地灵殿释放了几颗大核弹.地灵殿可以看做一个大小为n*m 的矩阵.一颗大小为k 的核弹,对于任意一个与爆炸中心曼哈顿距离小于k 的地区,会造成( ...

  6. JZOJ5411. 【NOIP2017提高A组集训10.22】友谊 DP

    DescriptionFlowey 是一朵能够通过友谊颗粒传播LOVE 的小花.它的友谊颗粒分为两种, 圆粒的和皱粒的,它们依次排列组成了一个长度为2m 的序列.对于一个友谊颗 粒的序列,如果存在1& ...

  7. 【JZOJ5411】【NOIP2017提高A组集训10.22】友谊

    Description Flowey 是一朵能够通过友谊颗粒传播LOVE 的小花.它的友谊颗粒分为两种, 圆粒的和皱粒的,它们依次排列组成了一个长度为2m 的序列.对于一个友谊颗 粒的序列,如果存在1 ...

  8. JZOJ 5410. 【NOIP2017提高A组集训10.22】小型耀斑

    Description Uthuso 的核反应失控了,她在地灵殿释放了几颗大核弹.地灵殿可以看做一个大小为n*m 的矩阵.一颗大小为k 的核弹,对于任意一个与爆炸中心曼哈顿距离小于k 的地区,会造成( ...

  9. 【NOIP2017提高A组集训10.22】友谊

    Description Flowey 是一朵能够通过友谊颗粒传播LOVE 的小花.它的友谊颗粒分为两种, 圆粒的和皱粒的,它们依次排列组成了一个长度为2m 的序列.对于一个友谊颗 粒的序列,如果存在1 ...

最新文章

  1. c++ 11 多线程处理(1)
  2. Oracle版本对应得使用的jar包
  3. 149. Max Points on a Line同一条线上的最多点数
  4. 第三章JavaScript 内置对象
  5. SQL SERVER 表分区
  6. 夫学须静也freeeim
  7. 顺序表(线性表的顺序存储)---C语言版
  8. Boundary Representations
  9. 六神不安,生死命悬一线
  10. Mac在线网页版打字推荐
  11. php日期时间戳转换
  12. Windows wmic命令之process进程管理
  13. 如何提升团队凝聚力,打造高绩效团队?
  14. Excel 去重找其他几列的最大值
  15. 阿里云服务器遭到攻击怎么办?
  16. freetype 函数介绍
  17. 怎么用计算机按反三角函数的导数,反三角函数求导过程
  18. 渐变插画:使用PSPS绘制渐变风格插画
  19. 菲律宾的光伏市场只有一个字概况:穷
  20. REDIS缓存集群介绍

热门文章

  1. 学考228XK_80计算机,复旦选课学概论.doc
  2. 2021北理工计算机专业复试名单,北京理工大学研究生拟录取名单2021整理汇总(各学院)...
  3. 【关于回归结果F值缺失的处理方式】
  4. 进程的定义,组成,组织方式,特征【操作系统学习笔记】
  5. 变电站仪器仪表检测图像数据集
  6. 难度较大题型--LeetCode
  7. realloc函数UAF利用|攻防世界pwn进阶区supermarket
  8. 唯众物联网—基于物联网平台的Andorid实验设计与实现教学实训资源 免费开源
  9. [车联网安全自学篇] ATTACK安全之检测 Android APN 代理
  10. 问题解决:win10应用程序无法正常启动0xc000007b