比赛 2025.5.5 评测结果 WWWWWWWWWW
题目名称 cake 最终得分 0
用户昵称 郑霁桓 运行时间 0.030 s
代码语言 C++ 内存使用 3.35 MiB
提交时间 2025-05-05 11:43:52
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
int n,m,a[2005][2005],t;
string s;
bool cl(long long xx,long long yy,long long x,long long y){
    long long s=0;
    for(int i=xx+1;i<=x;i++)
        for(int j=yy+1;j<=y;j++)
            s+=a[i][j];
    return (s!=2);
}
bool f(int xx,int yy){
    long long pi=0,pj=0;
    for(int i=0;i<n-1;i++)
        if(xx&(1<<i)){
            for(int j=0;j<m-1;j++)
                if(yy&(1<<j)){
                    if(cl(pi,pj,i+1,j+1)) return false;
                    else pj=j+1;
                }
            pi=i+1,pj=0;
        }
    for(int j=0;j<m-1;j++)
        if(yy&(1<<j)){
            if(cl(pi,pj,n,j+1)) return false;
            else pj=j+1;
        }
    if(cl(pi,pj,n,m)) return false;
    return true;
}
int main(){
    freopen("cake.in","r",stdin);
    freopen("cake.out","w",stdout);
    ios::sync_with_stdio(false);
    cin>>n>>m;
    if(n>100||m>100){cout<<0;return 0;}
    for(int i=1;i<=n;i++){
        cin>>s;
        for(int j=1;j<=m;j++) a[i][j]=(s[j-1]=='Y');
    }
    for(int i=0;i<(1<<(n-1));i++)
        for(int j=0;j<(1<<(m-1));j++)
            if(f(i,j)) t++;
    cout<<t;
    return 0;
}