# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
171462 | Akashi | Snake Escaping (JOI18_snake_escaping) | C++14 | 54 ms | 7036 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
using namespace std;
int n, q, L1, L2;
int dp[1594330];
int m1[1000005], m2[1000005], ans[1000005];
int p3[25], p2[25];
char s[1048580];
char in[25];
bool f[2200][130];
int main()
{
scanf("%d%d", &n, &q);
scanf("%s", s);
p3[0] = 1;
for(int i = 1; i <= 21 ; ++i) p3[i] = p3[i - 1] * 3;
p2[0] = 1;
for(int i = 1; i <= 21 ; ++i) p2[i] = p2[i - 1] * 2;
if(n >= 10) L1 = 7, L2 = n - L1;
else L1 = 1, L2 = n - L1;
for(int mask = 0; mask < p3[L1] ; ++mask){
for(int mask2 = 0; mask2 < p2[L1] ; ++mask2){
bool ok = true;
for(int i = 0; i < L1 ; ++i){
int x = (mask % p3[i + 1]) / p3[i];
int y = mask2 & p2[i];
if(x == y || x == 2) continue ;
ok = false; break ;
}
f[mask][mask2] = ok;
}
}
for(int i = 1; i <= q ; ++i){
scanf("%s", in);
for(int j = 0; j < L1 ; ++j){
int x;
if(in[j] == '0') x = 0;
else if(in[j] == '1') x = 1;
else x = 2;
m1[i] = m1[i] + x * p3[j];
}
for(int j = L1; j < n ; ++j){
int x;
if(in[j] == '0') x = 0;
else if(in[j] == '1') x = 1;
else x = 2;
m2[i] = m2[i] + x * p3[j - L1];
}
}
int P = (1 << L1);
for(int mask2 = 0; mask2 < P ; ++mask2){
memset(dp, 0, sizeof(dp));
int ad = mask2 * p2[L2];
for(int mask = 0; mask < p3[L2] ; ++mask){
bool found = false;
int mask2 = 0;
for(int i = 0; i < L2 ; ++i){
int x = (mask % p3[i + 1]) / p3[i];
if(x == 2){
found = true;
dp[mask] = dp[mask - x * p3[i]] + dp[mask - x * p3[i] + p3[i]];
break ;
}
else mask2 = mask2 + x * p2[L2 - i - 1];
}
if(!found) dp[mask] = s[mask2 + ad] - '0';
}
for(int i = 1; i <= q ; ++i){
if(f[m1[i]][mask2])
ans[i] += dp[m2[i]];
}
}
for(int i = 1; i <= q ; ++i)
printf("%d\n", ans[i]);
return 0;
}
컴파일 시 표준 에러 (stderr) 메시지
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |