2 条题解

  • 0
    @ 2025-10-27 13:18:23
    #include<iostream>
    #include<algorithm>
    using namespace std;
    int main()
    {
        int n,m;
        cin>>n>>m;
        char a[n+1][m+1];
    //打印数组
        int w[n+1]={0};
        int r[n+1]={0};
        int b[n+1]={0};
        for(int i=1;i<=n;i++)
        { 
    //记录每行3种颜料数
            int cntr=0,cntb=0,cntw=0;
            for(int j=1;j<=m;j++)
            {
                cin>>a[i][j];
                if(a[i][j]=='W')
                cntw++;
                else if(a[i][j]=='B')
                cntb++;
                else
                cntr++;
            }
    //前缀和算出前i行3种涂改所需涂料
            w[i]=w[i-1]+(m-cntw);
            r[i]=r[i-1]+(m-cntr);
            b[i]=b[i-1]+(m-cntb);
        }
        int mn=100000;
        int sum=0;
    //暴力枚举找出最优
        for(int i=1;i<n-1;i++)
        {
            for(int j=i+1;j<n;j++)
            {
                sum=w[i]+b[j]-b[i]+r[n]-r[j];
                mn=min(mn,sum);
            }
        }
        cout<<mn;
        return 0;
    }``
    

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

    信息

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