제출 #26911

#제출 시각아이디문제언어결과실행 시간메모리
26911wangyenjenCity (JOI17_city)C++14
98 / 100
522 ms56784 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 dfs_clock; static vector<int> table; static vector<int> G[MAX_N]; static int lb[MAX_N] , rb[MAX_N]; static void build_table() { int x = 1; table.push_back(x); while(x <= 5 * MAX_N) { int x2 = x * 1.05; if(x2 == x) x2++; table.push_back(x2); x = x2; } } static void dfs(int u , int fa) { lb[u] = ++dfs_clock; for(int v : G[u]) { if(v != fa) dfs(v , u); } dfs_clock = rb[u] = lb[u] + *lower_bound(table.begin() , table.end() , dfs_clock - lb[u]); } void Encode(int N , int A[] , int B[]) { build_table(); 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_clock = 0; dfs(0 , -1); for(int i = 0; i < N; i++) { int x = lower_bound(table.begin() , table.end() , rb[i] - lb[i]) - table.begin(); Code(i , (ll)lb[i] * (int)table.size() + x); } }
/// Author: Wang, Yen-Jen #include "Device.h" #include <bits/stdc++.h> using namespace std; typedef long long ll; static const int MAX_N = 250000 + 7; static vector<int> table; static void build_table() { int x = 1; table.push_back(x); while(x <= 5 * MAX_N) { int x2 = x * 1.05; if(x2 == x) x2++; table.push_back(x2); x = x2; } } void InitDevice() { build_table(); } int Answer(long long S , long long T) { int sl = S / (int)table.size(); int sr = sl + table[S % (int)table.size()]; int tl = T / (int)table.size(); int tr = tl + table[T % (int)table.size()]; if(tl <= sl && sr <= tr) return 0; else if(sl <= tl && tr <= sr) return 1; else return 2; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...