3 条题解

  • 4
    @ 2025-10-27 14:56:50
    using namespace std;
    
    int w[3000]={0};//每行W有几个
    int b[3000]={0};
    int r[3000]={0};
    char a[60][60]={0};
    
    int main(){
        ios::sync_with_stdio(0);
        cin.tie(0);
        cout.tie(0);
        int n,m;
        cin>>n>>m;
        for(int i=1;i<=n;i++){
            for(int j=1;j<=m;j++){
                cin>>a[i][j];
                if(a[i][j]=='W'){
                    w[i]++;
                }else if(a[i][j]=='B'){
                    b[i]++;
                }else{
                    r[i]++;
                }
            }
        }
        int min=3000;
        for(int i=1;i<=n-2;i++){
            for(int j=1;j<=n-1-i;j++){//枚举W、B、R区间并计算
                int sum=0;
                for(int k1=1;k1<=i;k1++){
                    sum+=m-w[k1];
                }
                for(int k2=i+1;k2<=n-j;k2++){
                    sum+=m-b[k2];
                }
                for(int k3=n-j+1;k3<=n;k3++){
                    sum+=m-r[k3];
                }
                if(min>sum) min=sum;
            }
        }
        cout<<min<<endl;
        return 0;
    }
    
    

    茶杯头的三色挑战:恶魔的旗帜

    信息

    ID
    1161
    时间
    1000ms
    内存
    256MiB
    难度
    5
    标签
    递交数
    52
    已通过
    20
    上传者