#include #include #include #include using namespace std; int main() { // DP[0枚コンプ][1枚コンプ][2枚コンプ] := その状態からコンプまで後何枚? // DP[0][0][0] = 0 -> 全て3枚コンプなので. int N; cin >> N; vector A(N); vector cnt(4); for (int i=0;i> A[i]; cnt[min(3, A[i])]++; } double p = 1.0 / N; vector DP(N+1, vector(N+1, vector(N+1, -1))); function dfs = [&](int a, int b, int c) { // 揃ってるのでコンプまで後0枚. if (a==0 && b==0 && c==0) return DP[a][b][c]= 0; if (-1 1枚所持 if (0 2枚所持 if (0 3枚所持 if (0 3枚以上所持 if (0