結果
問題 | No.463 魔法使いのすごろく🎲 |
ユーザー |
![]() |
提出日時 | 2016-12-14 00:28:01 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 26 ms / 2,000 ms |
コード長 | 1,362 bytes |
コンパイル時間 | 1,091 ms |
コンパイル使用メモリ | 103,916 KB |
実行使用メモリ | 5,248 KB |
最終ジャッジ日時 | 2024-11-30 01:43:57 |
合計ジャッジ時間 | 2,416 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 36 |
ソースコード
#define _USE_MATH_DEFINES#include <algorithm>#include <cstdio>#include <functional>#include <iostream>#include <cfloat>#include <climits>#include <cstdlib>#include <cstring>#include <cmath>#include <map>#include <queue>#include <set>#include <sstream>#include <stack>#include <string>#include <time.h>#include <vector>#include <random>using namespace std;#define rep(i, N) for (int i = 0; i < N; i++)#define pb push_backtypedef long long ll;typedef unsigned long long ull;typedef pair<int, int> i_i;typedef pair<ll, int> ll_i;typedef pair<double, int> d_i;typedef pair<ll, ll> ll_ll;typedef pair<double, double> d_d;struct edge { int u, v; ll w; };ll MOD = 1000000007;ll _MOD = 1000000009;int INF = INT_MAX / 2;double EPS = 1e-10;int main() {int N, M; cin >> N >> M;vector<int> a(N);for (int i = 1; i <= N - 2; i++)cin >> a[i];vector<vector<double> > dp(N, vector<double>(2));rep(t, 1000) {vector<vector<double> > _dp(N, vector<double>(2));for (int i = 0; i <= N - 2; i++) {double sum0 = 0, sum1 = 0, mi = DBL_MAX;for (int j = 1; j <= M; j++) {int k = i + j;if (k >= N) k = (N - 2) - (k - N);sum0 += dp[k][0] + a[k];sum1 += dp[k][1] + a[k];mi = min(mi, dp[k][0] + a[k]);}dp[i][0] = sum0 / M;dp[i][1] = min(sum1 / M, mi);}}printf("%.15f\n", dp[0][1]);}