返回题解分享
讨论 / 题解分享/ 帖子详情

逆序对期望(结果填空) - 题解

#include <bits/stdc++.h>
#define int long long
using namespace std;
typedef pair<int,int> pii;
double a[60];
double ans,sum;
double check()
{
    double tmp=0;
    for(int i=1;i<=51;i++)
    {
        for(int j=i+1;j<=51;j++)
        {
            if(a[i]>a[j]) tmp++;
        }
    }
    return tmp;
}
void solve()
{
  for(int i=1;i<=51;i++) a[i]=i;
  for(int i=1;i<=51;i++)
  {
      for(int j=i+1;j<=51;j++)
      {
          if(i!=j)
          {
              swap(a[i],a[j]);
              for(int k=1;k<=51;k++)
              {
                  for(int l=k+1;l<=51;l++)
                  {
                      if(l!=k)
                      {
                          sum++;
                          swap(a[k],a[l]);
                          ans+=check();
                          swap(a[k],a[l]);
                      }
                  }
              }
              swap(a[i],a[j]);
          }
      }
  }
  printf("%.2lf %.2lf %.2lf",ans,sum,ans/sum);
}
signed main()
{
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  int t;
  t=1;
  // cin>>t;
  while(t--)
  {
    solve();
  }
  return 0;
}
0 回复 0 转发 0 喜欢 6 阅读
回复 (0)
默认 最新
暂无回复,快来抢沙发!