Submission #149393

#TimeUsernameProblemLanguageResultExecution timeMemory
149393还没编好 (#200)Bulb Game (FXCUP4_bulb)C++17
100 / 100
154 ms48376 KiB
#include "bulb.h" #include <bits/stdc++.h> using namespace std; #define rep(i,a,n) for (int i=a;i<n;i++) #define per(i,a,n) for (int i=n-1;i>=a;i--) #define pb push_back #define mp make_pair #define all(x) (x).begin(),(x).end() #define fi first #define se second #define SZ(x) ((int)(x).size()) typedef vector<int> VI; typedef long long ll; typedef pair<int,int> PII; const ll mod=1000000007; ll powmod(ll a,ll b) {ll res=1;a%=mod; assert(b>=0); for(;b;b>>=1){if(b&1)res=res*a%mod;a=a*a%mod;}return res;} ll gcd(ll a,ll b) { return b?gcd(b,a%b):a;} // head const int N=301000; VI l,r; int n,fg,saf[N],tsaf,vis[N]; void dfs(int u,int par,int dep,VI pt) { if (SZ(pt)>2) return; if (u<0) { if (u!=-2) return; if (SZ(pt)==0) { fg=1; } else if (SZ(pt)==2) { vis[pt[0]]=1; vis[pt[1]]=1; } else { if (dep==n) return; vis[pt[0]]=1; saf[par]++; tsaf++; } } else { dfs(l[u],u,dep+1,pt); pt.pb(u); dfs(r[u],u,dep+1,pt); if (l[u]>=0) saf[u]+=saf[l[u]]; if (r[u]>=0) saf[u]+=saf[r[u]]; } } int FindWinner(int T, std::vector<int> L, std::vector<int> R){ l=L; r=R; n=L.size(); dfs(0,0,0,VI(0)); if (fg) return 0; rep(i,0,n) if (!vis[i]&&saf[i]==tsaf) return 1; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...