Submission #2453727


Source Code Expand

#include<algorithm>
#include<iostream>
#include<sstream>
#include<vector>
#include<cmath>
using namespace std;
typedef long long lint;
typedef vector<int>vi;
typedef pair<int,int>pii;
#define rep(i,n)for(int i=0;i<(int)(n);++i)

const int DEBUG = 0;

double dp[31][31];

int main(){
  int n;
  cin>>n;
  string pq;
  cin>>pq;
  stringstream ss(pq);
  double p;
  {
    int u,v;
    ss>>u;
    ss.ignore();
    ss>>v;
    p=(double)u/(double)v;
  }
  vector<vi>a(n,vi(n));
  rep(i,n)rep(j,n)cin>>a[i][j];
  vector<pii>has(n);
  rep(i,n){
    int t=0;
    rep(j,n)t+=a[i][j];
    has[i]=pii(-t,i);
  }
  sort(has.begin(),has.end());
  dp[0][n-1]=1;
  rep(i,n){
    int u=i==0?-1:has[i-1].second,v=has[i].second;
    vector<double> trans(n);
    int bc=0;
    rep(j,n)bc+=a[v][j];
    rep(j,bc+1){
      rep(k,n-bc){
	double tmp=pow(p,j+n-1-bc-k)*pow(1-p,bc-j+k);
	rep(l,j)tmp=tmp*(bc-l)/(l+1);
	rep(l,k)tmp=tmp*(n-1-bc-l)/(l+1);
	trans[j+k]+=tmp;
      }
    }
    if(DEBUG){
      cerr<<"trans["<<v<<"]:";
      rep(j,n)cerr<<" "<<trans[j];
      cerr<<endl;
    }
    rep(j,n)rep(k,n)
      if(j<k||(u<=v&&j==k))dp[i+1][j]+=trans[j]*dp[i][k];
  }
  double ans=0;
  rep(i,n)ans+=dp[n][i];
  printf("%.15f\n",ans);
}

Submission Info

Submission Time
Task C - 天下一プログラマーコンテスト1999
User kirika_comp
Language C++14 (GCC 5.4.1)
Score 600
Code Size 1279 Byte
Status AC
Exec Time 3 ms
Memory 384 KB

Judge Result

Set Name All
Score / Max Score 600 / 600
Status
AC × 43
Set Name Test Cases
All 00_sample_01, 00_sample_02, 00_sample_03, 00_sample_04, 02_manual_01, 02_manual_02, 02_manual_03, 02_manual_04, 02_manual_05, 02_manual_06, 02_manual_07, 02_manual_08, 02_manual_09, 02_manual_10, 02_manual_11, 02_manual_12, 20_random_00, 20_random_01, 20_random_02, 20_random_03, 20_random_04, 20_random_05, 20_random_06, 20_random_07, 20_random_08, 20_random_09, 20_random_10, 20_random_11, 20_random_12, 20_random_13, 20_random_14, 20_random_15, 20_random_16, 20_random_17, 20_random_18, 20_random_19, 30_manual_13, 30_manual_14, 30_manual_15, 30_manual_16, 30_manual_17, 30_manual_18, 30_manual_19
Case Name Status Exec Time Memory
00_sample_01 AC 3 ms 384 KB
00_sample_02 AC 1 ms 256 KB
00_sample_03 AC 1 ms 256 KB
00_sample_04 AC 1 ms 384 KB
02_manual_01 AC 1 ms 256 KB
02_manual_02 AC 1 ms 256 KB
02_manual_03 AC 1 ms 256 KB
02_manual_04 AC 1 ms 256 KB
02_manual_05 AC 1 ms 256 KB
02_manual_06 AC 1 ms 256 KB
02_manual_07 AC 1 ms 256 KB
02_manual_08 AC 1 ms 256 KB
02_manual_09 AC 1 ms 256 KB
02_manual_10 AC 1 ms 256 KB
02_manual_11 AC 1 ms 256 KB
02_manual_12 AC 1 ms 256 KB
20_random_00 AC 2 ms 256 KB
20_random_01 AC 2 ms 256 KB
20_random_02 AC 1 ms 256 KB
20_random_03 AC 1 ms 256 KB
20_random_04 AC 2 ms 256 KB
20_random_05 AC 1 ms 256 KB
20_random_06 AC 1 ms 256 KB
20_random_07 AC 1 ms 256 KB
20_random_08 AC 1 ms 256 KB
20_random_09 AC 2 ms 256 KB
20_random_10 AC 2 ms 256 KB
20_random_11 AC 1 ms 256 KB
20_random_12 AC 1 ms 256 KB
20_random_13 AC 1 ms 256 KB
20_random_14 AC 1 ms 256 KB
20_random_15 AC 1 ms 256 KB
20_random_16 AC 1 ms 256 KB
20_random_17 AC 1 ms 256 KB
20_random_18 AC 1 ms 256 KB
20_random_19 AC 2 ms 256 KB
30_manual_13 AC 3 ms 256 KB
30_manual_14 AC 3 ms 256 KB
30_manual_15 AC 2 ms 256 KB
30_manual_16 AC 3 ms 256 KB
30_manual_17 AC 2 ms 256 KB
30_manual_18 AC 3 ms 256 KB
30_manual_19 AC 3 ms 256 KB