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

来源:互联网 发布:美国实时经济数据 编辑:程序博客网 时间:2024/06/15 03:48

Description

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

Solution

我们发现题目给出爆炸范围一定全部在矩阵中。

那只需要维护一个菱形一样的东西。

有一个非常巧妙的办法

令sum[i][j]表示i,j为直角顶点的向左上的直线和向左下的直线围成的区域的和。

那么这个菱形的和就可以表示出来。
但是还要乘上的曼哈顿距离。

可以发现,最外一圈算了1次,向内递增

相当于把原来的菱形分成了K个大小递减的菱形

统计他们需要的+sum,-sum以及剩余的+1-1分别在横着和竖着的一条直线上

弄个前缀和即可

Code

因为是口胡,所以没有代码!

阅读全文
0 0