省略
省略
C++に変換後のコードはこちら
int X = 18, Y = 6;
char S[20][8]; int loc[3][6];
ll dp[4096], nx[4096];
{
int yy = 2*Y, yyy = 3*Y, mask, cur, nmask, c;
rd(S(X));
rep(2){
rep(i,Y) S[X][i] = '0';
X++;
}
dp[0] = 1;
rep(x,X){
rep(mask, 1<<yy) nx[mask] = 0;
rep(mask, 1<<yy) if(dp[mask]) rep(cur, 1<<Y){
nmask = ((mask << Y) | cur);
rep(i,yyy) loc[i/Y][i%Y] = if[BIT_ith(nmask,i), 1, 0];
rep(i,Y) if(S[x][i]=='0' && loc[0][i] != 0) break_continue;
rep(i,Y) if(S[x][i]=='1' && loc[0][i] != 1) break_continue;
rep(i,Y){
c = 0;
rep(k,3) if(loc[k][i]==1) c++;
if(i+1 < Y && loc[1][i+1]==1) c++;
if(i-1 >= 0 && loc[1][i-1]==1) c++;
if(c >= 3 && loc[1][i]==0) break_continue;
if(c <= 2 && loc[1][i]==1) break_continue;
}
nmask %= (1<<yy);
nx[nmask] += dp[mask];
}
rep(mask, 1<<yy) dp[mask] = nx[mask];
}
wt(sum(dp[0]));
}
Current time: 2024年04月20日03時30分12秒
Last modified: 2020年11月15日16時15分07秒 (by laycrs)
Tags: Competitive_Programming_Incomplete AtCoder
トップページに戻る
Logged in as: unknown user (not login)