NC53676

感受
今天空闲下来,于是做了这道题,乍一看,这不就是拿着一个正方形在地图上跑来跑去吗?
一眼题,巨水


思路
很容易得出,如果一个正方形内有1,那么对答案贡献+1
枚举所有正方形的位置只需要O(n * m),于是考虑如何快速check正方形内有无1。
这不是很眼熟吗?二维区间前缀和,于是就快速秒到这道题目了。
怎么求二维前缀和呢?太简单了,网上博客看一眼就懂了,这里就不赘述了。

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn = 1000 + 10;
int n, m, k;
char s[maxn][maxn];
int dp[maxn][maxn];///dp[i][j]表示(1, 1) --- (i, j)构成的矩形区域中1的个数
void solve(){
    for(int i = 1; i <= n; i++){
        for(int j = 1; j <= m; j++){
            dp[i][j] = dp[i][j - 1] + dp[i - 1][j] - dp[i - 1][j - 1] + (s[i][j] == '1');
        }
    }
}
void print(){
    for(int i = 1; i <= n; i++){
        printf("%s\n", s[i] + 1);
    }
    for(int i = 1; i <= n; i++){
        for(int j = 1; j <= m; j++){
            printf("dp[%d][%d] = %d   ", i, j, dp[i][j]);
        }
        putchar('\n');
    }

}
bool check(int x, int y){
    if(x > n || y > m) return false;
    return true;
}
int get(int x1, int y1, int x2, int y2){
    return dp[x2][y2] - dp[x2][y1 - 1] - dp[x1 - 1][y2] + dp[x1 - 1][y1 - 1];
}
int main(){
    scanf("%d%d%d", &n, &m, &k);
    for(int i = 1; i <= n; i++){
        scanf("%s", s[i] + 1);
    }
    solve();
    //print();
    int ans = 0;
    for(int i = 1; i <= n; i++){
        for(int j = 1; j <= m; j++){
            int x, y; x = i + k - 1; y = j + k - 1;
            if(!check(x, y)) continue;
            if(get(i, j, x, y)) ans++;
        }
    }
    printf("%d\n", ans);
    return 0;
}
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
正在热议
更多
# 春招至今,你的战绩如何? #
14007次浏览 132人参与
# AI面会问哪些问题? #
845次浏览 21人参与
# 米连集团26产品管培生项目 #
6935次浏览 223人参与
# 你的实习产出是真实的还是包装的? #
2487次浏览 48人参与
# AI时代,哪个岗位还有“活路” #
2565次浏览 49人参与
# 长得好看会提高面试通过率吗? #
2687次浏览 41人参与
# MiniMax求职进展汇总 #
24679次浏览 313人参与
# 你做过最难的笔试是哪家公司 #
1039次浏览 18人参与
# HR最不可信的一句话是__ #
959次浏览 31人参与
# 沪漂/北漂你觉得哪个更苦? #
990次浏览 29人参与
# 军工所铁饭碗 vs 互联网高薪资,你会选谁 #
7921次浏览 43人参与
# XX请雇我工作 #
51131次浏览 171人参与
# 简历中的项目经历要怎么写? #
310803次浏览 4252人参与
# 简历第一个项目做什么 #
32008次浏览 354人参与
# 不考虑薪资和职业,你最想做什么工作呢? #
152752次浏览 888人参与
# 当下环境,你会继续卷互联网,还是看其他行业机会 #
187504次浏览 1123人参与
# AI时代,哪些岗位最容易被淘汰 #
64429次浏览 860人参与
# 如果重来一次你还会读研吗 #
229954次浏览 2011人参与
# 正在春招的你,也参与了去年秋招吗? #
364069次浏览 2640人参与
# 腾讯音乐求职进展汇总 #
160800次浏览 1114人参与
# 你怎么看待AI面试 #
180570次浏览 1291人参与
# 投格力的你,拿到offer了吗? #
178092次浏览 889人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务