HDU電腦學院大學生程式設計競賽(2015’12)1006 01 Matrix

來源:互聯網
上載者:User

標籤:

題意:

有一個n*n(n<=1000)的01矩陣

Q次詢問(1000) 每次詢問有幾個大於等於k的全為一的子矩形

 

從右下角往右上方預先處理
每個點有一個r x v
r代表右邊有多少連續1
x代表下面有多少連續1
v代表以這個為左上方的矩陣最大是多少
所以v[i][j]= min(r[i][j+1], x[i+1][j],v[i+1][j+1]) +1

r[i][j]=r[i][j+1]+1;

x[i][j]=x[i+1][j]+1;

然後ans[v[i][j]]++

預先處理尾碼和  O 1 輸出

#include<cstdio>#include<cstring>#include<string>#include<iostream>#include<algorithm>#include<map>using namespace std;const int N=50005;int n,k,m;int s[1005];int v[1005][1005],r[1005][1005],x[1005][1005],a[1005][1005];char c[1005];int main(){    int i,j;    int T;    scanf("%d",&T);    while(T--)    {        scanf("%d%d",&n,&m);        memset(s,0,sizeof(s));        memset(r,0,sizeof(r));        memset(x,0,sizeof(x));        for(i=1; i<=n; i++)        {            scanf("%s",c);            for(j=0;j<n;j++)                a[i][j+1]=c[j]-‘0‘;        }        x[n+1][n]=0;        r[n][n+1]=0;        v[n+1][n+1]=0;        for(i=n; i>=1; i--)        {            for(j=n; j>=1; j--)            {                if(a[i][j])                {                    v[i][j]=min(min(v[i+1][j+1],r[i][j+1]),x[i+1][j]);                    r[i][j]=r[i][j+1]+1;                    x[i][j]=x[i+1][j]+1;                    v[i][j]++;                }                else                    v[i][j]=r[i][j]=x[i][j]=0;                s[v[i][j]]++;            }        }        for(i=n-1; i>=1; i--)        {            s[i]+=s[i+1];        }        while(m--)        {            scanf("%d",&k);            cout<<s[k]<<endl;        }    }    return 0;}

 

  

HDU電腦學院大學生程式設計競賽(2015’12)1006 01 Matrix

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.