제출 #330276

#제출 시각아이디문제언어결과실행 시간메모리
330276Kevin_Zhang_TWSnake Escaping (JOI18_snake_escaping)C++17
100 / 100
1781 ms20108 KiB
#include <bits/stdc++.h> //#pragma GCC optimize("Ofast") #pragma GCC target("popcnt") using namespace std; using ll = long long; #define pb emplace_back #define AI(i) begin(i), end(i) template<class T> bool chmax(T &a, T b) { return a < b ? (a = b, true) : false; } template<class T> bool chmin(T &a, T b) { return b < a ? (a = b, true) : false; } #ifdef KEV #define DE(args...) kout("[ " + string(#args) + " ] = ", args) void kout() { cerr << endl; } template<class T, class ...U> void kout(T a, U ...b) { cerr << a << ' ', kout(b...); } template<class T> void debug(T L, T R) { while (L != R) cerr << *L << " \n"[next(L) == R], ++L; } #else #define DE(...) 0 #define debug(...) 0 #endif const int MAX_N = 20; int n, q; char w[(1<<MAX_N) + 10], com[MAX_N << 1]; int dp[1<<MAX_N]; void init() { for (int i = 0;i < 1<<n;++i) dp[i] = w[i] - '0'; for (int i = 0;i < n;++i) for (int s = 0;s < 1<<n;++s) if (s>>i&1) dp[s] += dp[s^(1<<i)]; } int32_t main() { ios_base::sync_with_stdio(0), cin.tie(0); cin >> n >> q >> w; init(); for (int i = 0;i < q;++i) { cin >> com; int l = 0, r = (1<<n) - 1, sub = 0; reverse(com, com + n); for (int i = 0;i < n;++i) { if (com[i] == '0') r ^= 1<<i; if (com[i] == '1') l ^= 1<<i; if (com[i] == '?') sub |= 1<<i; } int res = 0; if (__builtin_popcount(sub) <= 10) { for (int s = sub ; s ;(--s) &= sub) { res += w[l | s] - '0'; } res += w[l] - '0'; } else { int ls = __builtin_popcount(l); for (int s = l ; s ; (--s) &= l) { int x = ((__builtin_popcount(s)^ls)&1?-1:1) * dp[s | sub]; res += x; } res += (ls&1?-1:1) * dp[sub]; DE(res); } cout << abs(res) << '\n'; } }

컴파일 시 표준 에러 (stderr) 메시지

snake_escaping.cpp: In function 'int32_t main()':
snake_escaping.cpp:20:17: warning: statement has no effect [-Wunused-value]
   20 | #define DE(...) 0
      |                 ^
snake_escaping.cpp:63:4: note: in expansion of macro 'DE'
   63 |    DE(res);
      |    ^~
#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...