ABC 327
Table of Contents
https://atcoder.jp/contests/abc327
A. ab
https://atcoder.jp/contests/abc327/tasks/abc327_a
B. A^A
https://atcoder.jp/contests/abc327/tasks/abc327_b
C. Number Place
https://atcoder.jp/contests/abc327/tasks/abc327_c
D. Good Tuple Problem
https://atcoder.jp/contests/abc327/tasks/abc327_d
E. Maximize Rating
https://atcoder.jp/contests/abc327/tasks/abc327_e
自力 AC
void solve() {
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
ll N;
cin >> N;
vll P(N + 1);
rep(i, N) cin >> P[i + 1];
double INF = 100000;
// dp[i][num]: i番目までの問題を選んで、num 個選んだときの \sum_{i=1}^k (0.9)^{k-i} Q[i] の最大値
vector dp(N + 1, vector<double>(N + 1, -INF));
dp[0][0] = 0;
rep2(i, 1, N + 1) {
rep(num, i + 1) {
chmax(dp[i][num], dp[i - 1][num]);
if (dp[i - 1][num] != -INF)
chmax(dp[i][num + 1], dp[i - 1][num] * 0.9 + P[i]);
}
}
vector<double> pow(N + 1), prd(N + 1);
pow[0] = prd[0] = 1;
rep2(i, 1, N + 1) {
pow[i] = pow[i - 1] * 0.9;
prd[i] += pow[i] + prd[i - 1];
}
double ans = -INF;
rep2(num, 1, N + 1) {
chmax(ans, dp[N][num] / prd[num - 1] - 1200.0 / sqrt(num));
}
printf("%.9lf\n", ans);
}
F. Apples
https://atcoder.jp/contests/abc327/tasks/abc327_f