제출 #1202426

#제출 시각아이디문제언어결과실행 시간메모리
1202426NeltSeptember (APIO24_september)C++20
100 / 100
157 ms19056 KiB
#include "september.h" #include <bits/stdc++.h> #define ll long long #define endl "\n" using namespace std; mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); const ll N = 1e5 + 5; vector<ll> g[N]; ll need[N]; void dfs(ll v) { for (ll to : g[v]) dfs(to), need[v] = max(need[v], need[to]); } int solve(int n, int m, std::vector<int> p, std::vector<std::vector<int>> a) { ll deg[n + 1]; p.insert(p.begin(), 0); for (ll i = 1; i <= n; i++) g[i].clear(); for (ll i = 1; i <= n; i++) p[i]++, g[p[i]].push_back(i); for (ll i = 1; i <= n; i++) deg[i] = 0; for (ll i = 1; i <= n; i++) deg[p[i]]++; ll freq[n + 1], cnt = 0; for (ll i = 1; i <= n; i++) freq[i] = 0; for (ll i = 0; i < m; i++) { a[i].insert(a[i].begin(), 0); for (ll j = 1; j < n; j++) a[i][j]++; } for (ll i = 1; i < n; i++) need[a[0][i]] = i; dfs(1); ll ans = 0, mx = 0; for (ll i = 1; i < n; i++) { for (ll j = 0; j < m; j++) { cnt += !freq[a[j][i]]; freq[a[j][i]]++; cnt -= freq[a[j][i]] == m; } mx = max(mx, need[a[0][i]]); if (!cnt and mx <= i) ans++; } return ans; }
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...