题目大意: 帕秋莉掌握了一种土属性魔法

这种魔法可以在一片k×k大小的一个正方形区域内产生地震

但是如果某片即将产生地震的区域内有建筑物,帕秋莉会停止施法

整个地图大小为n×m,其中一些地方有建筑

请问有多少种可能的情况,使得帕秋莉会停止施法.
图片说明


分析:枚举图片说明 子矩阵,判断矩阵中是否有1.
判断方法直接求子矩阵的元素和是否为0.
----------求子矩阵元素和常规技巧图片说明表示从图片说明图片说明 所组成的矩阵元素的和。
计算每图片说明 --(画图理解

如果要计算图片说明矩阵元素和
计算公式为图片说明 .------(同上,画图理解

#include<bits/stdc++.h>
using namespace std;

int mp[1005][1005],dp[1005][1005];

int main()
{
    int n,m,k;
    cin>>n>>m>>k;
    for( int i=1;i<=n;i++ )
    {
        for( int j=1;j<=m;j++ )
        {
            scanf("%1d",&mp[i][j]);
            dp[i][j]=dp[i][j-1]+dp[i-1][j]-dp[i-1][j-1]+mp[i][j];
        }
    }
    int ans=0;

    for( int i=k;i<=n;i++ )
    {
        for( int j=k;j<=m;j++ )
        {
            int num=dp[i][j]-(dp[i][j-k]+dp[i-k][j])+dp[i-k][j-k];
            if( num ) ans++;
        }
    }
    cout<<ans<<endl;
}