「土」秘法地震

答题卡

http://www.nowcoder.com/questionTerminal/68d4cc423c824d5881ecb314c78f0d1d

「土」秘法地震

思路:考查二维前缀和,怎么和二维前缀和联系起来?面积为k*k的正方形当存在建筑物(即有1时)会停止施法,而我们要找的是多少种情况会停止施法,换言之就是让我们在n * m的区间找内有多少个k *k的面积内和>0,因此前缀和处理,再扫面一边即可

二维前缀和

在一维的基础上,画图更容易理解,f[i] [j]代表从f[1] [1]到f[i] [j]所围成的矩阵之和,
那么我们第一步就是先构造前缀和,f[i] [j]=f[i-1] [j]+f[i] [j-1]-f[i-1] [j-1]
接下来就是扫描,f[i][j]-f[i-k][j]-f[i][j-k]+f[i-k][j-k]

注意:输入需用字符串读入后换成矩阵,也可用scanf直接读

#include<iostream>
#include<string>
using namespace std;
const int N=1e3+5;
int f[N][N];
string s[N];
int main()
{
    int n,m,k;
    cin>>n>>m>>k;
    for(int i=1;i<=n;i++)
    cin>>s[i];
    for(int i=1;i<=n;i++)
    for(int j=1;j<=m;j++)
    f[i][j]=s[i][j-1]-'0';

     for(int i=1;i<=n;i++)
     for(int j=1;j<=m;j++)
     f[i][j]+=f[i-1][j]+f[i][j-1]-f[i-1][j-1];
     int res=0;
     for(int i=k;i<=n;i++)
     {
         for(int j=k;j<=m;j++)
         if(f[i][j]-f[i-k][j]-f[i][j-k]+f[i-k][j-k]!=0)res++;
     }
     cout<<res<<endl;
    return 0;
 } 
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
正在热议
更多
# 春招至今,你的战绩如何? #
4344次浏览 34人参与
# 你的实习产出是真实的还是包装的? #
1041次浏览 27人参与
# 米连集团26产品管培生项目 #
3754次浏览 163人参与
# 军工所铁饭碗 vs 互联网高薪资,你会选谁 #
6842次浏览 35人参与
# 简历第一个项目做什么 #
31227次浏览 312人参与
# 当下环境,你会继续卷互联网,还是看其他行业机会 #
186301次浏览 1113人参与
# 巨人网络春招 #
11132次浏览 221人参与
# 面试紧张时你会有什么表现? #
30312次浏览 188人参与
# 简历中的项目经历要怎么写? #
309297次浏览 4146人参与
# 网易游戏笔试 #
6300次浏览 83人参与
# 职能管理面试记录 #
10674次浏览 59人参与
# 把自己当AI,现在最消耗你token的问题是什么? #
6809次浏览 154人参与
# 从哪些方向判断这个offer值不值得去? #
56693次浏览 357人参与
# 腾讯音乐求职进展汇总 #
160376次浏览 1105人参与
# 小红书求职进展汇总 #
226831次浏览 1356人参与
# AI时代,哪些岗位最容易被淘汰 #
62254次浏览 723人参与
# 你怎么看待AI面试 #
179196次浏览 1160人参与
# 正在春招的你,也参与了去年秋招吗? #
362437次浏览 2631人参与
# 你的房租占工资的比例是多少? #
92119次浏览 896人参与
# 机械求职避坑tips #
94392次浏览 567人参与
# 校招笔试 #
465713次浏览 2948人参与
# 面试官最爱问的 AI 问题是...... #
27023次浏览 833人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务