# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
45841 | 2018-04-16T09:08:43 Z | OneSubmissionMan | Fireworks (APIO16_fireworks) | C++11 | 27 ms | 27168 KB |
# include <bits/stdc++.h> # define x first # define y second # define mp make_pair // everything go according to my plan # define pb push_back # define sz(a) (int)(a.size()) # define vec vector // shimkenttin kyzdary, dzyn, dzyn, dzyn... # define y1 Y_U_NO_y1 # define left Y_U_NO_left # define right Y_U_NO_right using namespace std; typedef pair <int, int> pii; typedef long long ll; typedef long double ld; const int Mod = (int)1e9 + 7; const int MX = 1073741822; const ll MXLL = 4e18; const int Sz = 1110111; // a pinch of soul inline void Read_rap () { ios_base :: sync_with_stdio(0); cin.tie(0); cout.tie(0); } inline void randomizer3000 () { unsigned int seed; asm ("rdtsc" : "=A"(seed)); srand (seed); } void files (string problem) { if (fopen ((problem + ".in").c_str(),"r")) { freopen ((problem + ".in").c_str(),"r",stdin); freopen ((problem + ".out").c_str(),"w",stdout); } } void localInput(const char in[] = "s") { if (fopen (in, "r")) { freopen (in, "r", stdin); } else cerr << "Warning: Input file not found" << endl; } int n, m; vec<int> g[Sz]; const int N = 5e3 + 1; ll dp[N][N]; ll mn[N]; int c[Sz]; ll dist[Sz]; vec<ll> W; void pre_dfs (int v) { for (int to : g[v]) { dist[to] = dist[v] + c[to]; pre_dfs (to); } } void calc (int v) { for (int to : g[v]) calc (to); if (!sz(g[v])) { for (int i = 0; i < sz(W); i++) dp[v][i] = MX; dp[v][lower_bound (W.begin(), W.end(), dist[v]) - W.begin()] = 0; } for (int to : g[v]) { for (int i = 0; i < sz(W); i++) dp[v][i] += dp[to][i]; } for (int i = 0; i < sz(W); i++) { mn[i] = dp[v][i]; for (int j = 0; j < i; j++) mn[i] = min (mn[i], W[i] - W[j] + dp[v][j]); for (int j = i+1; j < sz(W); j++) { if (W[j] - W[i] > c[v]) break; mn[i] = min (mn[i], W[j] - W[i] + dp[v][j]); } } for (int i = 0; i < sz(W); i++) dp[v][i] = mn[i]; } int main() { # ifdef Local //localInput(); # endif Read_rap(); cin >> n >> m; for (int i = 2; i <= n + m; i++) { static int pr; cin >> pr >> c[i]; g[pr].pb (i); } pre_dfs (1); for (int i = n + 1; i <= n + m; i++) W.pb (dist[i]); sort (W.begin(), W.end()); W.resize (unique (W.begin(), W.end()) - W.begin()); calc (1); cout << *min_element (dp[1], dp[1] + sz(W)); return 0; } // Coded by Z..
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 22 ms | 26360 KB | Output is correct |
2 | Correct | 24 ms | 26468 KB | Output is correct |
3 | Correct | 25 ms | 26928 KB | Output is correct |
4 | Correct | 25 ms | 27004 KB | Output is correct |
5 | Correct | 24 ms | 27168 KB | Output is correct |
6 | Correct | 24 ms | 27168 KB | Output is correct |
7 | Correct | 27 ms | 27168 KB | Output is correct |
8 | Correct | 24 ms | 27168 KB | Output is correct |
9 | Correct | 24 ms | 27168 KB | Output is correct |
10 | Correct | 24 ms | 27168 KB | Output is correct |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 23 ms | 27168 KB | Output is correct |
2 | Correct | 23 ms | 27168 KB | Output is correct |
3 | Incorrect | 23 ms | 27168 KB | Output isn't correct |
4 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 22 ms | 26360 KB | Output is correct |
2 | Correct | 24 ms | 26468 KB | Output is correct |
3 | Correct | 25 ms | 26928 KB | Output is correct |
4 | Correct | 25 ms | 27004 KB | Output is correct |
5 | Correct | 24 ms | 27168 KB | Output is correct |
6 | Correct | 24 ms | 27168 KB | Output is correct |
7 | Correct | 27 ms | 27168 KB | Output is correct |
8 | Correct | 24 ms | 27168 KB | Output is correct |
9 | Correct | 24 ms | 27168 KB | Output is correct |
10 | Correct | 24 ms | 27168 KB | Output is correct |
11 | Correct | 23 ms | 27168 KB | Output is correct |
12 | Correct | 23 ms | 27168 KB | Output is correct |
13 | Incorrect | 23 ms | 27168 KB | Output isn't correct |
14 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 22 ms | 26360 KB | Output is correct |
2 | Correct | 24 ms | 26468 KB | Output is correct |
3 | Correct | 25 ms | 26928 KB | Output is correct |
4 | Correct | 25 ms | 27004 KB | Output is correct |
5 | Correct | 24 ms | 27168 KB | Output is correct |
6 | Correct | 24 ms | 27168 KB | Output is correct |
7 | Correct | 27 ms | 27168 KB | Output is correct |
8 | Correct | 24 ms | 27168 KB | Output is correct |
9 | Correct | 24 ms | 27168 KB | Output is correct |
10 | Correct | 24 ms | 27168 KB | Output is correct |
11 | Correct | 23 ms | 27168 KB | Output is correct |
12 | Correct | 23 ms | 27168 KB | Output is correct |
13 | Incorrect | 23 ms | 27168 KB | Output isn't correct |
14 | Halted | 0 ms | 0 KB | - |