- 问答
玉米田输出0
- 2024-6-8 9:24:01 @
rt 求改
#include<bits/stdc++.h>
#define sc scanf
#define qq for
#define p printf
#define wh while
using namespace std;
long long n, m;
long long sit[10000];
long long cnt;
long long f[200][20000];
long long pp[100000];
void wrl ( long long op, long long e )
{
if ( e > m )
{
sit[++cnt] = op;
return;
}
wrl ( op, e + 1 );
wrl ( op + ( 1 << ( e - 1 ) ), e + 2 );
}
int main()
{
//freopen(".in","r",stdin);
//freopen(".out","w",stdout);
sc ( "%lld%lld", &n, &m );
int a;
for ( long long i = 1; i <= n; i++ )
for ( long long j = 1; j <= m; j++ )
{
sc ( "%d", &a );
pp[i] += ( a << ( j - 1 ) );
}
wrl ( 0, 1 );
for ( long long i = 1; i <= cnt; i++ ) if ( ( sit[i] | pp[1] ) == pp[1] ) f[1][i] = 1;
for ( long long i = 2; i <= n; i++ )
for ( long long j = 1; j <= cnt; j++ )
{
if ( ( sit[i] | pp[i] ) > pp[i] ) continue;
for ( long long x = 1; x <= cnt; x++ )
{
if ( ( sit[j] & sit[x] ) == 0 )
f[i][j] = ( f[i][j] + f[i - 1][x]) % 100000000;
}
}
long long ans = 0;
for ( long long i = 1; i <= cnt; i++ ) ans += f[n][i] % 100000000, ans %= 100000000;
p ( "%lld", ans % 100000000 );
return 0;
}
0 条评论
目前还没有评论...