ZOJ - 3944 People Counting【暴力模拟】

    科技2023-09-19  99

    题目

    传送门

    Sample Input 2 3 3 .O. /| (.) 3 4 OOO( /|\ ())) Sample Output 1 4

    题意:给你一个n*m的图,问图中有几个人,图中的某一部分也可以代表一个人

    思路:暴力,找到的每一部分都消去和他是同一个人的那部分

    AC code

    #include<iostream> #include<algorithm> #include<cstring> #include<cmath> #include<map> #include<sstream> #include<queue> #include<stack> using namespace std; int t,n,m; char aa[120][120]; void solve() { memset(aa,0,sizeof(aa)); int s=0; for(int i=0;i<n;i++) cin>>aa[i]; for(int i=0;i<n;i++) for(int j=0;j<m;j++) { if(aa[i][j]=='O') { aa[i][j]='.'; s++; int p,q; p=i+1,q=j-1; if((p>=0)&&(p<n)&&(q>=0)&&(q<m)&&aa[p][q]=='/')aa[p][q]='.'; p=i+1,q=j; if((p>=0)&&(p<n)&&(q>=0)&&(q<m)&&aa[p][q]=='|')aa[p][q]='.'; p=i+1,q=j+1; if((p>=0)&&(p<n)&&(q>=0)&&(q<m)&&aa[p][q]=='\\')aa[p][q]='.'; p=i+2,q=j-1; if((p>=0)&&(p<n)&&(q>=0)&&(q<m)&&aa[p][q]=='(')aa[p][q]='.'; p=i+2,q=j+1; if((p>=0)&&(p<n)&&(q>=0)&&(q<m)&&aa[p][q]==')')aa[p][q]='.'; } else if(aa[i][j]=='/') { aa[i][j]='.'; s++; int p,q; p=i-1,q=j+1; if((p>=0)&&(p<n)&&(q>=0)&&(q<m)&&aa[p][q]=='O')aa[p][q]='.'; p=i,q=j+1; if((p>=0)&&(p<n)&&(q>=0)&&(q<m)&&aa[p][q]=='|')aa[p][q]='.'; p=i,q=j+2; if((p>=0)&&(p<n)&&(q>=0)&&(q<m)&&aa[p][q]=='\\')aa[p][q]='.'; p=i+1,q=j; if((p>=0)&&(p<n)&&(q>=0)&&(q<m)&&aa[p][q]=='(')aa[p][q]='.'; p=i+1,q=j+2; if((p>=0)&&(p<n)&&(q>=0)&&(q<m)&&aa[p][q]==')')aa[p][q]='.'; } else if(aa[i][j]=='|') { aa[i][j]='.'; s++; int p,q; p=i-1,q=j; if((p>=0)&&(p<n)&&(q>=0)&&(q<m)&&aa[p][q]=='O')aa[p][q]='.'; p=i,q=j-1; if((p>=0)&&(p<n)&&(q>=0)&&(q<m)&&aa[p][q]=='/')aa[p][q]='.'; p=i,q=j+1; if((p>=0)&&(p<n)&&(q>=0)&&(q<m)&&aa[p][q]=='\\')aa[p][q]='.'; p=i+1,q=j-1; if((p>=0)&&(p<n)&&(q>=0)&&(q<m)&&aa[p][q]=='(')aa[p][q]='.'; p=i+1,q=j+1; if((p>=0)&&(p<n)&&(q>=0)&&(q<m)&&aa[p][q]==')')aa[p][q]='.'; } else if(aa[i][j]=='\\') { aa[i][j]='.'; s++; int p,q; p=i-1,q=j-1; if((p>=0)&&(p<n)&&(q>=0)&&(q<m)&&aa[p][q]=='O')aa[p][q]='.'; p=i,q=j-2; if((p>=0)&&(p<n)&&(q>=0)&&(q<m)&&aa[p][q]=='/')aa[p][q]='.'; p=i,q=j-1; if((p>=0)&&(p<n)&&(q>=0)&&(q<m)&&aa[p][q]=='|')aa[p][q]='.'; p=i+1,q=j-2; if((p>=0)&&(p<n)&&(q>=0)&&(q<m)&&aa[p][q]=='(')aa[p][q]='.'; p=i+1,q=j; if((p>=0)&&(p<n)&&(q>=0)&&(q<m)&&aa[p][q]==')')aa[p][q]='.'; } else if(aa[i][j]=='(') { aa[i][j]='.'; s++; int p,q; p=i-2,q=j+1; if((p>=0)&&(p<n)&&(q>=0)&&(q<m)&&aa[p][q]=='O')aa[p][q]='.'; p=i-1,q=j; if((p>=0)&&(p<n)&&(q>=0)&&(q<m)&&aa[p][q]=='/')aa[p][q]='.'; p=i-1,q=j+1; if((p>=0)&&(p<n)&&(q>=0)&&(q<m)&&aa[p][q]=='|')aa[p][q]='.'; p=i-1,q=j+2; if((p>=0)&&(p<n)&&(q>=0)&&(q<m)&&aa[p][q]=='\\')aa[p][q]='.'; p=i,q=j+2; if((p>=0)&&(p<n)&&(q>=0)&&(q<m)&&aa[p][q]==')')aa[p][q]='.'; } else if(aa[i][j]==')') { aa[i][j]='.'; s++; int p,q; p=i-2,q=j-1; if((p>=0)&&(p<n)&&(q>=0)&&(q<m)&&aa[p][q]=='O')aa[p][q]='.'; p=i-1,q=j-2; if((p>=0)&&(p<n)&&(q>=0)&&(q<m)&&aa[p][q]=='/')aa[p][q]='.'; p=i-1,q=j-1; if((p>=0)&&(p<n)&&(q>=0)&&(q<m)&&aa[p][q]=='|')aa[p][q]='.'; p=i-1,q=j; if((p>=0)&&(p<n)&&(q>=0)&&(q<m)&&aa[p][q]=='\\')aa[p][q]='.'; p=i,q=j-2; if((p>=0)&&(p<n)&&(q>=0)&&(q<m)&&aa[p][q]=='(')aa[p][q]='.'; } } printf("%d\n",s); } int main() { ios::sync_with_stdio(0); cin>>t; while(t--) { cin>>n>>m; solve(); } }
    Processed: 0.029, SQL: 8