zoukankan      html  css  js  c++  java
  • hdu 4517

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4517

    昨天Tencent的题目,好吧,当时悲剧地TLE了。。。。orz,今天网上搜了一下,基本上都是用dp做的。。。orz。。。

    思路:sum[i][j]表示从1-i,1-j的矩阵中的'*'的个数。。。

    View Code
     1 #include<iostream>
     2 const int N=2004;
     3 using namespace std;
     4 char map[N][N];
     5 int sum[N][N];//sum[i][j]表示从1-i,1-j的矩形中的"*"的个数
     6 
     7 int main(){
     8     int n,m;
     9     while(~scanf("%d%d",&n,&m)){
    10         if(n==0&&m==0)break;
    11         int x,y,count=0;
    12         scanf("%d%d",&x,&y);
    13         memset(sum,0,sizeof(sum));
    14         for(int i=1;i<=n;i++){
    15             scanf("%s",1+map[i]);
    16             count=0;
    17             for(int j=1;j<=m;j++){
    18                 if(map[i][j]=='*')count++;
    19                 sum[i][j]=count+sum[i-1][j];
    20             }
    21         }
    22         count=0;
    23         for(int i=1;i<=n;i++){
    24             for(int j=1;j<=m;j++){
    25                 if(i+x-1<=n&&j+y-1<=m){
    26                     int ans=sum[i+x-1][j+y-1]-sum[i+x-1][j-1]-sum[i-1][j+y-1]+sum[i-1][j-1];//求x*y的面积内的'*'的个数
    27                     if(ans==x*y)count++;
    28                 }
    29                 //一开始没判断x!=y!!!!
    30                 if(i+y-1<=n&&j+x-1<=m&&x!=y){
    31                     int ans=sum[i+y-1][j+x-1]-sum[i+y-1][j-1]-sum[i-1][j+x-1]+sum[i-1][j-1];
    32                     if(ans==x*y)count++;
    33                 }
    34             }
    35         }
    36         printf("%d\n",count);
    37     }
    38     return 0;
    39 }
  • 相关阅读:
    leetcode
    vue初尝试--组件
    vue初尝试--项目结构
    vue初尝试--新建项目
    SQL取xml中节点值
    UI设计
    Asp.NET中Gridview CSS---Office2003风格
    Jquery+JSON+WebService使用总结
    ASP.NET 如何固定表格表头(fixed header)
    项目总结
  • 原文地址:https://www.cnblogs.com/wally/p/2978148.html
Copyright © 2011-2022 走看看