Submission #1602150
Source Code Expand
//http://tdpc.contest.atcoder.jp/tasks/tdpc_tournament //http://microbe.hatenablog.com/entry/2017/09/07/202517 #include <bits/stdc++.h> #define REP(i,a,b) for(int i=(a);i<(b);i++) typedef long long ll; using namespace std; const int INF=1e9, MOD=1e9+7; const int MAX_N=10000; int k,r[1024]; double dp[1024][11]; //dp[i][k]:=i番目の人がk連勝する確率 //dp[i][j+1] = for(auto s:S) dp[i][j+1]+=dp[i][j]*(iがsに勝つ確率) //S:=iがjラウンド目に当たる可能性のある人。 double win(int p, int q){ return 1.0/(1.0+pow(10.0,(q-p)/400.0)); } int main(){ cin >> k; REP(i,0,(1<<k)) cin >> r[i]; REP(i,0,(1<<k)) dp[i][0]=1; REP(i,0,k){ REP(j,0,(1<<k)) REP(l,0,(1<<k)){ if((j>>i)!=(l>>i) and (j>>(i+1))==(l>>(i+1))) dp[j][i+1] += dp[j][i]*dp[l][i]*win(r[j], r[l]); } } cout << fixed << setprecision(9); REP(i,0,(1<<k)) cout << dp[i][k] << endl; return 0; }
Submission Info
Submission Time | |
---|---|
Task | C - トーナメント |
User | ecasdqina |
Language | C++14 (GCC 5.4.1) |
Score | 4 |
Code Size | 936 Byte |
Status | AC |
Exec Time | 98 ms |
Memory | 640 KB |
Judge Result
Set Name | All | ||
---|---|---|---|
Score / Max Score | 4 / 4 | ||
Status |
|
Set Name | Test Cases |
---|---|
All | 00, 01, 02, 03, 90, 91 |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
00 | AC | 98 ms | 640 KB |
01 | AC | 96 ms | 384 KB |
02 | AC | 37 ms | 384 KB |
03 | AC | 96 ms | 512 KB |
90 | AC | 1 ms | 256 KB |
91 | AC | 1 ms | 256 KB |