求调
  • 板块灌水区
  • 楼主ChpyX2
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/9/22 22:05
  • 上次更新2024/9/22 22:17:15
查看原帖
求调
818475
ChpyX2楼主2024/9/22 22:05

rt

tp

#include<bits/stdc++.h>
using namespace std;
const long long maxn=100005;
long long n,m,c[15]={},dp[15][10005]={};
int main(){
    cin>>n>>m;
    for(long long i=1;i<=n;i++){
        for(long long j=1;j<=m;j++){
            long long x;
            cin>>x;
            c[i]*=2;
            c[i]+=x;
        }
    }
    for(long long i=0;i<=c[1];i++){//初始化dp[1][?],如果合法就可以=1
        if(i|c[i]==c[i]&&(i&(i*2))==0)dp[1][i]=1;
        // cout<<dp[1][i]<<' ';
    }
    // cout<<'\n';
    for(long long l=2;l<=n;l++){//枚举行
        for(long long i=0;i<=c[l];i++){//枚举当前行状态
            if((i|c[l])!=c[l]||(i&(i*2)))continue;
            // cout<<1;
            for(long long j=0;j<=c[l-1];j++){//枚举上一行状态
                if((j|c[l-1])!=c[l-1]||(j&(j*2)))continue;
                // cout<<2;
                if(i&j)continue;
                // cout<<3;
                dp[l][i]=(dp[l][i]+dp[l-1][j])%(long long)(1e9);
            } 
            // cout<<dp[l][i]<<' ';
        }
        // cout<<'\n';
    }
    long long ans=0;
    for(long long i=0;i<=m;i++){
        ans=(ans+dp[n][i])%(long long)(1e9);
    }
    cout<<ans<<'\n';
    return 0;
}
//from chpyx2
2024/9/22 22:05
加载中...