제출 #26888

#제출 시각아이디문제언어결과실행 시간메모리
26888wangyenjenCity (JOI17_city)C++14
0 / 100
169 ms19696 KiB
/// Author: Wang, Yen-Jen #include "Encoder.h" #include <bits/stdc++.h> using namespace std; typedef long long ll; static const int MAX_N = 250000 + 7; static int dp[MAX_N]; static ll dp2[MAX_N]; static vector<int> G[MAX_N]; static void dfs(int u , int fa) { if(fa == -1) { dp[u] = 0; dp2[u] = 0; } assert(dp[u] <= 61); int cc = 0; int cnt = (int)G[u].size(); if(~fa) cnt--; while((1<<cc) < cnt) cc++; for(int v : G[u]) { if(v == fa) continue; dp[v] = dp[u] + cc + 1; dp2[v] = ((ll)cnt<<dp[u]) | dp2[u]; cnt--; dfs(v , u); } } void Encode(int N , int A[] , int B[]) { for(int i = 0; i < N; i++) G[i].clear(); for(int i = 0; i < N - 1; i++) { G[A[i]].push_back(B[i]); G[B[i]].push_back(A[i]); } dfs(0 , -1); for(int i = 0; i < N; i++) Code(i , dp2[i]); }
/// Author: Wang, Yen-Jen #include "Device.h" #include <bits/stdc++.h> using namespace std; void InitDevice() { } inline static bool check(long long a , long long b) { while(a && b) { if((a&1) != (b&1)) return 0; a >>= 1; b >>= 1; } return a == 0; } int Answer(long long S , long long T) { if(S == 0) return 1; else if(T == 0) return 0; if(T < S && check(T , S)) return 0; else if(S < T && check(S , T)) return 1; else return 2; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...