Submission #306554
Source Code Expand
#define _USE_MATH_DEFINES
#define _CRT_SECURE_NO_DEPRECATE
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <climits>
#include <cfloat>
#include <ctime>
#include <cassert>
#include <map>
#include <utility>
#include <set>
#include <iostream>
#include <memory>
#include <string>
#include <vector>
#include <algorithm>
#include <functional>
#include <sstream>
#include <complex>
#include <stack>
#include <queue>
#include <numeric>
#include <list>
#include <iomanip>
#include <fstream>
#include <iterator>
#include <bitset>
using namespace std;
typedef long long ll;
typedef pair<int, int> Pii;
typedef pair<ll, ll> Pll;
#define FOR(i,n) for(int i = 0; i < (n); i++)
#define sz(c) ((int)(c).size())
#define ten(x) ((int)1e##x)
template<class T> T gcd(T a, T b) { return b ? gcd(b, a % b) : a; }
template<class T> T lcm(T a, T b) { return a / gcd(a, b) * b; }
typedef unsigned long long ull;
double p[3];
double tbl[101][101][101][4];
double dfs(int p1, int p2, int p3,int game) {
if (tbl[p1][p2][p3][game] >= 0) {
return tbl[p1][p2][p3][game];
}
double ret = 1e300;
bool first_stage = (game == 0); // 初回
if (p1 > 0) {
int ngame = game + 1;
if (ngame >= 3) ngame = 0; //extraはないので
double suc = dfs(p1 - 1, p2, p3, ngame);
double ans;
if (first_stage) {
if (p[0] == 1.0) ans = 1 + suc;
else ans = (1 + suc * p[0]) / p[0];
} else {
double fil = dfs(p1, p2, p3, 0);
ans = suc * p[0] + fil * (1 - p[0]);
}
ret = min(ret, ans);
}
if (p2 > 0) {
int ngame = game + 1;
if (ngame >= 4) ngame = 0; //extraあり!
double suc = dfs(p1, p2 - 1, p3, ngame);
double ans;
if (first_stage) {
if (p[1] == 1.0) ans = 1 + suc;
else ans = (1 + suc * p[1]) / p[1];
} else {
double fil = dfs(p1, p2, p3, 0);
ans = suc * p[1] + fil * (1 - p[1]);
}
ret = min(ret, ans);
}
if (p3 > 0) {
int ngame = game + 1;
if (ngame >= 4) ngame = 0; //extraあり!
double suc = dfs(p1, p2, p3 - 1, ngame);
double ans;
if (first_stage) {
if (p[2] == 1.0) ans = 1 + suc;
else ans = (1 + suc * p[2]) / p[2];
} else {
double fil = dfs(p1, p2, p3, 0);
ans = suc * p[2] + fil * (1 - p[2]);
}
ret = min(ret, ans);
}
return tbl[p1][p2][p3][game] = ret;
}
int main() {
int n[3];
FOR(i, 3) cin >> n[i];
FOR(i, 3) cin >> p[i];
FOR(i,3) p[i] /= 100;
FOR(p0, 101) {
FOR(p1, 101) {
FOR(p2, 101) {
FOR(i, 4) {
tbl[p0][p1][p2][i] = -1;
}
}
}
}
FOR(i,4) tbl[0][0][0][i] = 0;
double ans = dfs(n[0], n[1], n[2], 0);
printf("%.15lf\n", ans);
}
Submission Info
Submission Time |
|
Task |
E - Game |
User |
math |
Language |
C++11 (GCC 4.8.1) |
Score |
100 |
Code Size |
2689 Byte |
Status |
AC |
Exec Time |
374 ms |
Memory |
33056 KB |
Judge Result
Set Name |
Sample |
All |
Score / Max Score |
0 / 0 |
100 / 100 |
Status |
|
|
Set Name |
Test Cases |
Sample |
subtask0_sample_01.txt, subtask0_sample_02.txt, subtask0_sample_03.txt, subtask0_sample_04.txt, subtask0_sample_05.txt |
All |
subtask0_sample_01.txt, subtask0_sample_02.txt, subtask0_sample_03.txt, subtask0_sample_04.txt, subtask0_sample_05.txt, subtask1_manual_01.txt, subtask1_manual_02.txt, subtask1_manual_03.txt, subtask1_manual_04.txt, subtask1_manual_05.txt, subtask1_manual_06.txt, subtask1_manual_07.txt, subtask1_random_01.txt, subtask1_random_02.txt, subtask1_random_03.txt, subtask1_random_04.txt, subtask1_random_05.txt, subtask1_random_06.txt, subtask1_random_07.txt, subtask1_random_08.txt, subtask1_random_09.txt, subtask1_random_10.txt |
Case Name |
Status |
Exec Time |
Memory |
subtask0_sample_01.txt |
AC |
73 ms |
32876 KB |
subtask0_sample_02.txt |
AC |
366 ms |
32940 KB |
subtask0_sample_03.txt |
AC |
72 ms |
32932 KB |
subtask0_sample_04.txt |
AC |
75 ms |
32932 KB |
subtask0_sample_05.txt |
AC |
74 ms |
32936 KB |
subtask1_manual_01.txt |
AC |
72 ms |
32932 KB |
subtask1_manual_02.txt |
AC |
74 ms |
32940 KB |
subtask1_manual_03.txt |
AC |
70 ms |
32936 KB |
subtask1_manual_04.txt |
AC |
374 ms |
33056 KB |
subtask1_manual_05.txt |
AC |
365 ms |
33000 KB |
subtask1_manual_06.txt |
AC |
236 ms |
32932 KB |
subtask1_manual_07.txt |
AC |
255 ms |
33012 KB |
subtask1_random_01.txt |
AC |
125 ms |
33024 KB |
subtask1_random_02.txt |
AC |
97 ms |
32940 KB |
subtask1_random_03.txt |
AC |
87 ms |
32932 KB |
subtask1_random_04.txt |
AC |
73 ms |
32928 KB |
subtask1_random_05.txt |
AC |
100 ms |
32936 KB |
subtask1_random_06.txt |
AC |
127 ms |
32912 KB |
subtask1_random_07.txt |
AC |
92 ms |
33056 KB |
subtask1_random_08.txt |
AC |
108 ms |
32932 KB |
subtask1_random_09.txt |
AC |
99 ms |
32924 KB |
subtask1_random_10.txt |
AC |
94 ms |
32932 KB |