iscsi

SRM 513 D1 500 PerfectMemory

Jul 28th, 2011
194
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.04 KB | None | 0 0
  1. #include <ctime>
  2. #include <algorithm>
  3. #include <iostream>
  4. #include <sstream>
  5. #include <string>
  6. #include <vector>
  7. #include <queue>
  8. #include <set>
  9. #include <map>
  10. #include <cstdio>
  11. #include <cstdlib>
  12. #include <cctype>
  13. #include <cmath>
  14. #include <float.h>
  15. using namespace std;
  16. typedef long long LL;
  17. #define FOR(k,a,b) for(int k(a); k < (b); ++k)
  18. #define REP(k,a) for(int k=0; k < (a); ++k)
  19.  
  20. class PerfectMemory {
  21.     public:
  22.     double getExpectation(int N, int M)
  23.     {
  24.         int n=N*M;
  25.         vector<vector<double> > dp(n+1,vector<double> (n+1));//unknown card, known
  26.         REP(i,n+1)
  27.         FOR(j,i,n+1)
  28.             dp[i][j]=(i+j)/2;
  29.         REP(i,n+1)
  30.         REP(j,i)
  31.         if(((i+j)%2)==0)
  32.         {
  33.             double u=i,k=j;
  34.             dp[i][j]+=(1+dp[i-2][j+2])*((u-k)/u*(u-k-2)/(u-1));
  35.             dp[i][j]+=(1+dp[i-2][j])*((u-k)/(u*(u-1)));
  36.             dp[i][j]+=(2+dp[i-2][j])*((u-k)/u*(k)/(u-1));
  37.             if(j)
  38.                 dp[i][j]+=(1+dp[i-1][j-1])*(k/u);
  39.         }
  40.         return dp[n][0];
  41.     }
  42. };
Advertisement
Add Comment
Please, Sign In to add comment