제출 #667178

#제출 시각아이디문제언어결과실행 시간메모리
667178KahouSnake Escaping (JOI18_snake_escaping)C++14
22 / 100
346 ms26264 KiB
#include<bits/stdc++.h> using namespace std; #define F first #define S second #define endl '\n' typedef long long ll; typedef pair<int,int> pii; typedef pair<ll, ll> pll; const int N = 15; const int M = 2e6; int n, q, dp[M], pw[N]; string s; void solve() { cin >> n >> q; cin >> s; for (int i = 0; i < (1<<n); i++) { int nmask = 0; for (int j = 12; j >= 0; j--) { nmask *= 3; nmask += (i>>j&1); } dp[nmask] += (s[i]-'0'); } pw[0] = 1; for (int i = 1; i <= n; i++) { pw[i] = pw[i-1]*3; } for (int i = 0; i < n; i++) { for (int mask = 0; mask < pw[n]; mask++) { if ((mask/pw[i])%3 == 2) { dp[mask] += dp[mask-pw[i]] + dp[mask-2*pw[i]]; } } } while (q--) { string t; cin >> t; int mask = 0; for (int i = 0; i < n; i++) { mask *= 3; mask += (t[i]!='0') + (t[i] == '?'); } cout << dp[mask] << endl; } } int main() { ios::sync_with_stdio(0), cin.tie(0), cout.tie(0); solve(); return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...