제출 #1248774

#제출 시각아이디문제언어결과실행 시간메모리
1248774Joon_Yorigami던전 (IOI21_dungeons)C++20
0 / 100
3 ms840 KiB
#include "dungeons.h" #include <bits/stdc++.h> using namespace std; using ll = long long; using vll = vector<ll>; constexpr ll maxn = 400005; constexpr ll loge = 25; //binlift ll par[maxn][loge]; ll gain[maxn][loge]; ll allwin[maxn]; ll allstrength; ll N; void init(int n, std::vector<int> s, std::vector<int> p, std::vector<int> w, std::vector<int> l) { N=n; allstrength=s[0]; par[n][0]=n; gain[n][0]=0; for(int i=0;i<n;i++) { par[i][0]=l[i]; gain[i][0]=p[i]; } for(int j=1;j<loge;j++) { for(int i=0;i<=n;i++) { par[i][j]=par[par[i][j-1]][j-1]; gain[i][j]=gain[par[i][j-1]][j-1]+gain[i][j-1]; } } for(int i=n;i>=0;i--) { allwin[i]=0; } for(int i=n-1;i>=0;i--) { allwin[i]=s[i]+allwin[w[i]]; } return; } long long simulate(int x, int strength) { ll p = 24; while(p>=0&&strength<=allstrength) { if((p==0&&strength<allstrength) || (par[x][p]!=N && strength+gain[x][p]<=allstrength)) { cerr << p << ": " << strength << "," << gain[x][p] << '\n'; strength+=gain[x][p]; x=par[x][p]; } p--; } cerr << "owo\n"; return strength+allwin[x]; }
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...