zoukankan      html  css  js  c++  java
  • HDU 4517

    EASY题,直接统计(1,1)到(i,j)的黑点个数,然后计算出以(i,j)点为右下角的矩形内的黑点个数是x*y即可。

    注意当x==y时不要重复统计。

    #include <iostream>
    #include <cstdio>
    #include <algorithm>
    #include <cstring>
    #include <cmath>
    using namespace std;
    
    const int N=2005;
    
    int cn[N][N];
    int n,m,x,y;
    char str[N];
    
    int main(){
        while(scanf("%d%d",&n,&m),n||m){
            scanf("%d%d",&x,&y);
            for(int i=0;i<=n;i++){
                for(int j=0;j<=m;j++)
                cn[i][j]=0;
            }
            int ans=0;
            for(int i=1;i<=n;i++){
                scanf("%s",str+1);
                for(int j=1;j<=m;j++)
                if(str[j]=='*'){
                    cn[i][j]=cn[i-1][j]+cn[i][j-1]-cn[i-1][j-1]+1;
                    if(i-x>=0&&j-y>=0){
                        ans+=(cn[i][j]-cn[i-x][j]-cn[i][j-y]+cn[i-x][j-y])==x*y?1:0;
                    }
                    if(i-y>=0&&j-x>=0&&x!=y){
                        ans+=(cn[i][j]-cn[i-y][j]-cn[i][j-x]+cn[i-y][j-x])==x*y?1:0;
                    }
                }
                else cn[i][j]=cn[i-1][j]+cn[i][j-1]-cn[i-1][j-1];
            }
            printf("%d
    ",ans);
        }
        return 0;
    }
  • 相关阅读:
    【Linux】命令——基本命令
    正则表达式
    Letex
    Markdown
    文本编辑器Vim
    【Linux】集群
    【Linux】软件安装
    共线性synteny
    windows触控手势
    【Linux】bin结尾的安装包
  • 原文地址:https://www.cnblogs.com/jie-dcai/p/4354231.html
Copyright © 2011-2022 走看看