ログインしてください。
提出 #1624811
ソースコード 拡げる
#include <iostream>
#include <cmath>
#include <algorithm>
#include <vector>
#include <set>
#define rep(i, n) for (int i = 0; i < (int)n; ++i)
#define pb push_back
using namespace std;
typedef vector<int> vi;
int N;
double dp[1<<13];
double P[14][3];
int a[14];
double sub[1<<13][8];
int main() {
cin >> N;
rep(i, N) {
cin >> a[i];
if (i > 0) {
rep(j, 3) {
cin >> P[i][j];
P[i][j] /= 100;
}
}
}
rep(i, 1 << (N-1)) {
if (i == 0) continue;
vector<double> pp[N+1];
rep(i, N+1) pp[i].resize(8);
pp[0][0] = 1.0;
rep(j, N-1) {
if ((i>>j)&1) {
rep(k, 8) {
rep(u, 3) {
pp[j+1][k | (1 << u)] += pp[j][k] * P[j+1][u];
}
}
} else {
rep(k, 8) {
pp[j+1][k] = pp[j][k];
}
}
}
rep(k, 8) {
sub[i][k] = pp[N-1][k];
}
}
dp[0] = 1.0;
for (int i = 1; i < (1<<(N-1)); ++i) {
double mx = 0.0;
bool f = 1;
rep(j, N-1) {
if ((i>>j)&1) {
if (a[j+1] > a[0]) {
f = 0;
}
}
}
rep(c, 3) {
double t = 0.0;
for (int j = i; j >= 0; --j) {
j &= i;
double p = 1.0;
rep(k, N-1) {
if ((i>>k) & 1) {
if ((j>>k) & 1) {
p *= P[k+1][c];
} else {
p *= P[k+1][(c+2)%3];
}
}
}
p *= dp[j];
t += p;
}
if (f) {
rep(l, 8) {
int b = (1 << c) | l;
int bit = __builtin_popcount(b);
if (bit == 1 || bit == 3) {
t += sub[i][l];
}
}
}
mx = max(mx, t);
}
dp[i] = mx;
}
printf("%.8f\n", dp[(1<<(N-1))-1]);
return 0;
}
提出情報
| 提出日時 | |
|---|---|
| 問題 | D - Janken Master |
| ユーザ | DEGwasshun |
| 言語 | C++14 (GCC 5.4.1) |
| 得点 | 100 |
| コード長 | 1626 Byte |
| 結果 | AC |
| 実行時間 | 239 ms |
| メモリ | 768 KiB |
ジャッジ結果
| セット名 | All | ||
|---|---|---|---|
| 得点 / 配点 | 100 / 100 | ||
| 結果 |
|
| セット名 | テストケース |
|---|---|
| All | 0_sample_00, 0_sample_01, 0_sample_02, 0_sample_03, 0_sample_04, 10_small_0, 10_small_1, 10_small_2, 10_small_3, 10_small_4, 10_small_5, 10_small_6, 10_small_7, 10_small_8, 10_small_9, 20_random_0, 20_random_1, 20_random_2, 20_random_3, 20_random_4, 20_random_5, 20_random_6, 20_random_7, 20_random_8, 20_random_9, 30_large_0, 30_large_1, 30_large_2, 30_large_3, 30_large_4, 30_large_5, 30_large_6, 30_large_7, 30_large_8, 30_large_9, 40_bias_0, 40_bias_1, 40_bias_2, 40_bias_3, 40_bias_4, 40_bias_5, 40_bias_6, 40_bias_7, 40_bias_8, 40_bias_9, 50_not_so_bias_0, 50_not_so_bias_1, 50_not_so_bias_2, 50_not_so_bias_3, 50_not_so_bias_4, 50_not_so_bias_5, 50_not_so_bias_6, 50_not_so_bias_7, 50_not_so_bias_8, 50_not_so_bias_9, 60_one_zero_0, 60_one_zero_1, 60_one_zero_2, 60_one_zero_3, 60_one_zero_4, 60_one_zero_5, 60_one_zero_6, 60_one_zero_7, 60_one_zero_8, 60_one_zero_9, 70_two_zero_0, 70_two_zero_1, 70_two_zero_2, 70_two_zero_3, 70_two_zero_4, 70_two_zero_5, 70_two_zero_6, 70_two_zero_7, 70_two_zero_8, 70_two_zero_9, 9_challenge_00 |
| ケース名 | 結果 | 実行時間 | メモリ |
|---|---|---|---|
| 0_sample_00 | AC | 1 ms | 256 KiB |
| 0_sample_01 | AC | 1 ms | 256 KiB |
| 0_sample_02 | AC | 1 ms | 256 KiB |
| 0_sample_03 | AC | 1 ms | 256 KiB |
| 0_sample_04 | AC | 1 ms | 256 KiB |
| 10_small_0 | AC | 1 ms | 256 KiB |
| 10_small_1 | AC | 1 ms | 256 KiB |
| 10_small_2 | AC | 1 ms | 256 KiB |
| 10_small_3 | AC | 1 ms | 256 KiB |
| 10_small_4 | AC | 1 ms | 256 KiB |
| 10_small_5 | AC | 1 ms | 256 KiB |
| 10_small_6 | AC | 1 ms | 256 KiB |
| 10_small_7 | AC | 1 ms | 256 KiB |
| 10_small_8 | AC | 1 ms | 256 KiB |
| 10_small_9 | AC | 1 ms | 256 KiB |
| 20_random_0 | AC | 9 ms | 384 KiB |
| 20_random_1 | AC | 239 ms | 768 KiB |
| 20_random_2 | AC | 26 ms | 384 KiB |
| 20_random_3 | AC | 4 ms | 256 KiB |
| 20_random_4 | AC | 2 ms | 256 KiB |
| 20_random_5 | AC | 1 ms | 256 KiB |
| 20_random_6 | AC | 2 ms | 256 KiB |
| 20_random_7 | AC | 1 ms | 256 KiB |
| 20_random_8 | AC | 78 ms | 512 KiB |
| 20_random_9 | AC | 1 ms | 256 KiB |
| 30_large_0 | AC | 237 ms | 768 KiB |
| 30_large_1 | AC | 237 ms | 768 KiB |
| 30_large_2 | AC | 237 ms | 768 KiB |
| 30_large_3 | AC | 237 ms | 768 KiB |
| 30_large_4 | AC | 237 ms | 768 KiB |
| 30_large_5 | AC | 237 ms | 768 KiB |
| 30_large_6 | AC | 237 ms | 768 KiB |
| 30_large_7 | AC | 237 ms | 768 KiB |
| 30_large_8 | AC | 237 ms | 768 KiB |
| 30_large_9 | AC | 237 ms | 768 KiB |
| 40_bias_0 | AC | 77 ms | 512 KiB |
| 40_bias_1 | AC | 1 ms | 256 KiB |
| 40_bias_2 | AC | 1 ms | 256 KiB |
| 40_bias_3 | AC | 1 ms | 256 KiB |
| 40_bias_4 | AC | 239 ms | 768 KiB |
| 40_bias_5 | AC | 238 ms | 768 KiB |
| 40_bias_6 | AC | 4 ms | 256 KiB |
| 40_bias_7 | AC | 4 ms | 256 KiB |
| 40_bias_8 | AC | 1 ms | 256 KiB |
| 40_bias_9 | AC | 1 ms | 256 KiB |
| 50_not_so_bias_0 | AC | 77 ms | 512 KiB |
| 50_not_so_bias_1 | AC | 9 ms | 384 KiB |
| 50_not_so_bias_2 | AC | 2 ms | 256 KiB |
| 50_not_so_bias_3 | AC | 1 ms | 256 KiB |
| 50_not_so_bias_4 | AC | 1 ms | 256 KiB |
| 50_not_so_bias_5 | AC | 1 ms | 256 KiB |
| 50_not_so_bias_6 | AC | 237 ms | 768 KiB |
| 50_not_so_bias_7 | AC | 1 ms | 256 KiB |
| 50_not_so_bias_8 | AC | 26 ms | 384 KiB |
| 50_not_so_bias_9 | AC | 2 ms | 256 KiB |
| 60_one_zero_0 | AC | 1 ms | 256 KiB |
| 60_one_zero_1 | AC | 78 ms | 512 KiB |
| 60_one_zero_2 | AC | 2 ms | 256 KiB |
| 60_one_zero_3 | AC | 1 ms | 256 KiB |
| 60_one_zero_4 | AC | 238 ms | 768 KiB |
| 60_one_zero_5 | AC | 77 ms | 512 KiB |
| 60_one_zero_6 | AC | 4 ms | 256 KiB |
| 60_one_zero_7 | AC | 1 ms | 256 KiB |
| 60_one_zero_8 | AC | 1 ms | 256 KiB |
| 60_one_zero_9 | AC | 2 ms | 256 KiB |
| 70_two_zero_0 | AC | 1 ms | 256 KiB |
| 70_two_zero_1 | AC | 237 ms | 768 KiB |
| 70_two_zero_2 | AC | 26 ms | 384 KiB |
| 70_two_zero_3 | AC | 1 ms | 256 KiB |
| 70_two_zero_4 | AC | 1 ms | 256 KiB |
| 70_two_zero_5 | AC | 1 ms | 256 KiB |
| 70_two_zero_6 | AC | 25 ms | 384 KiB |
| 70_two_zero_7 | AC | 1 ms | 256 KiB |
| 70_two_zero_8 | AC | 77 ms | 512 KiB |
| 70_two_zero_9 | AC | 77 ms | 640 KiB |
| 9_challenge_00 | AC | 1 ms | 256 KiB |