제출 #1135221

#제출 시각아이디문제언어결과실행 시간메모리
1135221emptypringlescanSpeedrun (RMI21_speedrun)C++17
100 / 100
56 ms512 KiB
#include <bits/stdc++.h> using namespace std; #include "speedrun.h" vector<int> adj[1005]; int par[1005]; vector<int> pre; void dfs(int x, int p){ par[x]=p; pre.push_back(x); for(int i:adj[x]){ if(i==p) continue; dfs(i,x); } } void assignHints(int st, int n, int A[], int B[]){ setHintLen(20); for(int i=1; i<n; i++){ adj[A[i]].push_back(B[i]); adj[B[i]].push_back(A[i]); } dfs(1,0); pre.push_back(pre[0]); for(int i=1; i<=n; i++){ for(int j=0; j<10; j++){ setHint(i,j+1,1&(par[i]>>j)); } for(int j=0; j<10; j++){ setHint(pre[i-1],j+11,1&(pre[i]>>j)); } } } void speedrun(int st, int n, int start){ int cur=start,nxt=-1; while(true){ if(nxt==-1){ nxt=0; for(int i=0; i<10; i++){ nxt|=(getHint(i+11)<<i); } } if(nxt==start) break; if(goTo(nxt)){ cur=nxt; nxt=-1; } else{ int p=0; for(int i=0; i<10; i++){ p|=(getHint(i+1)<<i); } assert(goTo(p)==true); } } }
#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...