cf1280B——分类讨论+模拟

Posted zsben991126

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了cf1280B——分类讨论+模拟相关的知识,希望对你有一定的参考价值。

一开始想复杂了,然后写了一大堆代码,其实2的情况是判一下四个角,再判一下每一行每一列即可

/*
结果必定<=4
0:所有人都是A
1:边界一整行都是A
2:非边界一整行/列都是A,
    角落是A 
3:剩余情况 
4:A被P包围
不可能:都是P 
*/
#include<bits/stdc++.h>
using namespace std;
#define N 105

int r,c;
char mp[N][N]; 


int main(){
    int t;cin>>t;while(t--){
        cin>>r>>c;
        int flag1=0,flag2=0; 
        for(int i=1;i<=r;i++)
            for(int j=1;j<=c;j++){
                cin>>mp[i][j];
                if(mp[i][j]==P)flag1=1;
                if(mp[i][j]==A)flag2=1;
            }
        if(!flag1){cout<<0<<
;continue;}
        if(!flag2){cout<<"MORTAL"<<
;continue;}
        
        //1
        int f=0;
        for(int i=1;i<=r;i++)if(mp[i][1]==P)f=1;
        if(!f){puts("1");continue;}
        f=0;
        for(int i=1;i<=r;i++)if(mp[i][c]==P)f=1;
        if(!f){puts("1");continue;}
        f=0;
        for(int i=1;i<=c;i++)if(mp[1][i]==P)f=1;
        if(!f){puts("1");continue;}
        f=0;
        for(int i=1;i<=c;i++)if(mp[r][i]==P)f=1;
        if(!f){puts("1");continue;}
        
        //2
        if(mp[1][1]==A || mp[1][c]==A || mp[r][1]==A || mp[r][c]==A){
            puts("2");continue;
        }
        f=0;
        for(int i=1;i<=r;i++){
            int flag=0;
            for(int j=1;j<=c;j++)if(mp[i][j]==P)flag=1;
            if(!flag)f=1;
        }
        if(f){puts("2");continue;}
        f=0;
        for(int i=1;i<=c;i++){
            int flag=0;
            for(int j=1;j<=r;j++)if(mp[j][i]==P)flag=1;
            if(!flag)f=1;
        }
        if(f){puts("2");continue;}
        
                
        //3
        f=0;
        for(int i=1;i<=r;i++)
            if(mp[i][1]==A || mp[i][c]==A)f=1;
        for(int i=1;i<=c;i++)
            if(mp[1][i]==A || mp[r][i]==A)f=1;
        if(f){puts("3");continue;}
            
        puts("4");
        
        memset(mp,0,sizeof mp);
    }
}

以上是关于cf1280B——分类讨论+模拟的主要内容,如果未能解决你的问题,请参考以下文章

[CF1216C] White Sheet - 离散化,模拟

cf 模拟

CF870FPaths 分类讨论+数学

CF746 C 分类讨论 水题

CF 1003B Binary String Constructing 构造/找规律/分类讨论

CF1042C Array Product 分类讨论+贪心