提出 #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
結果
AC × 76
セット名 テストケース
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