読者です 読者をやめる 読者になる 読者になる

SRM460 Div2Med TheFansAndMeetingsDivTwo

解法
互いに (i)場所を選び (ii)ファンの人数 a, b を選び (iii)ファンの人数が一致する(a = b)とき (iv) それぞれ 1 / (ファンの人数の範囲) を足し合わせる。

class TheFansAndMeetingsDivTwo {
public:
  double find(vector <int> minJ, vector <int> maxJ, vector <int> minB, vector <int> maxB) {
    double N = minJ.size();
    double ans = 0.;
    for(int i=0; i<N; i++)
      for(int k=minJ[i]; k<=maxJ[i]; k++)
        for(int j=0; j<N; j++)
          for(int l=minB[j]; l<=maxB[j]; l++)
            if(k == l)
            { ans += (1./N)*(1./N)*(1./(maxJ[i]-minJ[i]+1))*(1./(maxB[j]-minB[j]+1)); }

    return ans;
  }
};