Submission #536968

#TimeUsernameProblemLanguageResultExecution timeMemory
536968zaneyuSpeedrun (RMI21_speedrun)C++14
71 / 100
242 ms928 KiB
#include "speedrun.h" #include <bits/stdc++.h> #define REP(i,n) for(int i=0;i<n;i++) #define MNTO(x,y) x=min(x,y) #define REP1(i,n) for(int i=1;i<=n;i++) #define ll long long #define ld long double #define sz(x) (int)x.size() #define pb push_back #define ALL(x) x.begin(),x.end() #define unq(c) (sort(c.begin(),c.end()), c.resize(distance(c.begin(),unique(c.begin(),c.end())))) const int maxn=2e3+5; using namespace std; vector<int> v[maxn]; void dfs(int u,int p){ REP(j,10) setHint(u,j+1,(p&(1<<j))>>j); if(u>1){ v[u].erase(find(ALL(v[u]),p)); } if(sz(v[u])) REP(j,10) setHint(u,j+11,(v[u][0]&(1<<j))>>j); REP(j,sz(v[u])){ int x=v[u][j]; int nxt=u; if(j<sz(v[u])-1) nxt=v[u][j+1]; REP(j,10) setHint(x,j+21,(nxt&(1<<j))>>j); dfs(x,u); } } void assignHints(int subtask, int n, int A[], int B[]) { REP1(i,n-1){ v[A[i]].pb(B[i]); v[B[i]].pb(A[i]); } if(subtask==2){ setHintLen(20); REP1(i,n){ if(sz(v[i])==n-1){ REP1(a,n) REP(j,10) setHint(a,j+1,(i&(1<<j))>>j); } } return; } if(subtask==3){ setHintLen(20); } setHintLen(30); dfs(1,1023); } void gotoo(int x){ if(x==0) assert(false); goTo(x); } void dfs2(int u){ int p=0; REP(j,10) p=(p<<1)+getHint(10-j); int x=0; REP(j,10) x=(x<<1)+getHint(20-j); if(x==0){ gotoo(p); return; } while(x!=u){ gotoo(x); int nx=0; REP(j,10) nx=(nx<<1)+getHint(30-j); dfs2(x); x=nx; } if(u!=1) gotoo(p); } void speedrun(int subtask, int n, int start) { if(subtask==2){ int p=0; REP(j,10) p=(p<<1)+getHint(10-j); goTo(p); REP1(i,n){ goTo(i); goTo(p); } return; } if(subtask==3){ return; } while(start!=1){ int p=0; REP(j,10) p=(p<<1)+getHint(10-j); gotoo(p); start=p; } dfs2(1); }
#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...