zoukankan      html  css  js  c++  java
  • hdu 2483 Counting square

    http://acm.hdu.edu.cn/showproblem.php?pid=2483

    需要对矩阵进行预处理来降低复杂度。

    代码如下:

    #include"stdio.h"
    #include"string.h"
    
    int a[305][305],vis1[305][305],vis2[305][305];
    int sum[305][305];
    
    
    int main( )
    {
        int i,j,r,c,t,count,k,s;
        scanf("%d",&t);
        while(t--)
        {
            count=0;
            scanf("%d%d",&r,&c);
            memset(vis1,0,sizeof(vis1));
            memset(vis2,0,sizeof(vis2));
            memset(sum,0,sizeof(sum));
            for(i=1;i<=r;i++)
                for(j=1;j<=c;j++)//对该矩阵进行预处理;
                {
                    scanf("%d",&a[i][j]);
                    if(a[i][j]==1)
                    {vis1[i][j]=vis1[i-1][j]+1;vis2[i][j]=vis2[i][j-1]+1;}//vis1[i][j]存放第i行第j个元素及其以上该列中所含的1的个数;
                    else
                    {vis1[i][j]=vis1[i-1][j];vis2[i][j]=vis2[i][j-1];}
                    sum[i][j]=sum[i-1][j]+vis2[i][j];//sum中存放该元素到首元素所形成矩形中1的个数;
                }
            for(i=1;i<=r;i++)
                for(j=1;j<=c;j++)
                {
                    if(a[i][j]==0)
                        continue;
                    for(k=1;i+k<=r&&j+k<=c;k++)
                    {
                        if(a[i+k][j+k]==0)
                            continue;
                        if(vis1[i+k][j]-vis1[i][j]!=k||vis1[i+k][j+k]-vis1[i][j+k]!=k||vis2[i][j+k]-vis2[i][j]!=k||vis2[i+k][j+k]-vis2[i+k][j]!=k)
                            continue;
                        s=sum[i+k-1][j+k-1]-sum[i+k-1][j]-sum[i][j+k-1]+sum[i][j];
                        if((k-1)*(k-1)-2*s>=-1&&(k-1)*(k-1)-2*s<=1)
                            count++;
                    }
                }
            printf("%d\n",count);
        }
        return 0;
    }
  • 相关阅读:
    Python-Basis-9th
    Python-Basis-8th
    Python-Basis-7th
    Ubuntu-Basis-4th
    Ubuntu-Basis-3rd
    Ubuntu-Basis-2nd
    Ubuntu-Basis-1st
    疯狂java第五章&&第六章-面向对象
    疯狂java第四章-流程控制与数组
    疯狂java第三章-数据类型和运算符
  • 原文地址:https://www.cnblogs.com/chaosheng/p/2521319.html
Copyright © 2011-2022 走看看