#chokudai今日の一問 2日目は,
今日の一問!ABC026より、高橋君の給料。今だと300点くらい?
— chokudai(高橋 直大)🍆🍡🌸 (@chokudai) August 20, 2019
これも昨日と同じく「実装出来てほしい」系の問題。緑の人の目標タイムが20分くらい、って感じ。https://t.co/Z2MuWxj8lp
ABC#026 C - 高橋君の給料
自分より数字の大きい上司はいないので,後ろから順番に給料を決めていく.
二次元vector の初期化のうまいやり方がわからんかった.
#include <algorithm> #include <cmath> #include <cstdio> #include <iomanip> #include <iostream> #include <map> #include <queue> #include <sstream> #include <string> using namespace std; static int N; static vector<vector<int>> B; void solve() { vector<long long> v(N + 1, 1); for (int i = N; i > 0; i--) { vector<int> x; for (int b = 1; b < B[i].size(); b++) { x.push_back(v[B[i][b]]); } if (x.empty()) { v[i] = 1; } else { v[i] = *max_element(x.begin(), x.end()) + *min_element(x.begin(), x.end()) + 1; } } printf("%lld\n", v[1]); } int main() { cin >> N; B.resize(N + 1); for (int i = 0; i < N + 1; i++) { vector<int> v(1); B[i] = v; } for (int i = 0; i < N - 1; i++) { int b; cin >> b; B[b].push_back(i + 2); } solve(); return 0; }