姐不理我
查看原帖
姐不理我
514850
Acerkaio楼主2023/10/20 09:32

开了 O2 100pts但是 hack 组没过

没开 O2 40pts hack 组没过

MY CODE:

#include <bits/stdc++.h>
using namespace std;
#define int long long
const int mod = 1e9, _ = 15;
bool flag[_]; //judge
int R[_], dp[_][1 << 12 + 5], N, M;
signed main() {
    // read
    cin >> M >> N;
    for (int i = 1; i <= M; i++) 
        for (int j = 1; j <= N; j++) {
            int tempread;
            cin >> tempread;
            R[i] = (R[i] << 1) + tempread;
        }

    // init
    for (int i = 0; i < (1 << N); i++)
        flag[i] = ((!((i & (i << 1)))) && (!(i & (i >> 1))));
    dp[0][0] = 1; //No Planting

    // dp
    for (int i = 1; i <= M; i++) 
        for (int j = 0; j < (1 << N); j++) 
            if (flag[j] && (j | R[i]) == R[i]) 
                for (int k = 0; k < (1 << N); k++) {
                    if ((k & j)) continue;
                    dp[i][j] = (dp[i][j] + dp[i - 1][k]) % mod;
                }
    int ans = 0;
    for (int i = 0; i < (1 << N); i++)
        ans = (ans + dp[M][i]) % mod;
    return (!printf("%lld", ans));
}


// ______________________________________
//|??????????????????????????????????????|
//|Submit by Acerkaio(Acerakoi || 514850)|
//|¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿¿|
//|______________________________________|
2023/10/20 09:32
加载中...