Advertisement
Guest User

Covid sampling Codechef

a guest
Jun 15th, 2020
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.55 KB | None | 0 0
  1.     private static int[][][] fr = new int[61][61][2];
  2.     private static int[][][] condFr = new int[61][121][2];
  3.  
  4.     private static void preprocess(int n, int p) {
  5.         Random random = new Random();
  6.         for (int attempt = 0; attempt < 100000; attempt++) {
  7.             realGrid = new int[n][n];
  8.             for (int i = 0; i < n; i++) {
  9.                 for (int j = 0; j < n; j++) {
  10.                     if (random.nextDouble() < p * 0.01) {
  11.                         realGrid[i][j] = 1;
  12.                     }
  13.                 }
  14.             }
  15.             int[] sumR = new int[n];
  16.             for (int row = 0; row < n; row++) {
  17.                 sumR[row] = realGrid[row][0];
  18.                 for (int c = 1; c < n; c++) {
  19.                     sumR[row] += realGrid[row][c];
  20.                 }
  21.             }
  22.             int[] sumC = new int[n];
  23.             for (int col = 0; col < n; col++) {
  24.                 sumC[col] = realGrid[0][col];
  25.                 for (int r = 1; r < n; r++) {
  26.                     sumC[col] += realGrid[r][col];
  27.                 }
  28.             }
  29.             for (int i = 0; i < n; i++) {
  30.                 for (int j = 0; j < n; j++) {
  31.                     int sum = 0;
  32.                     for (int x = i; x < n; x++) {
  33.                         sum += realGrid[x][j];
  34.                     }
  35.                     for (int y = j; y < n; y++) {
  36.                         sum += realGrid[i][y];
  37.                     }
  38.                     if (realGrid[i][j] == 1) {
  39.                         fr[sumR[i]][sumC[j]][1]++;
  40.                         condFr[sum][2 * n - i - j][1]++;
  41.                     } else {
  42.                         fr[sumR[i]][sumC[j]][0]++;
  43.                         condFr[sum][2 * n - i - j][0]++;
  44.                     }
  45.                 }
  46.             }
  47.         }
  48.  
  49.         double sumAll = 0;
  50.         double sumPairs = 0;
  51.         for (int i = 0; i < 61; i++) {
  52.             for (int j = 0; j < 61; j++) {
  53.                 sumPairs += fr[i][j][0] + fr[i][j][1];
  54.             }
  55.         }
  56.  
  57.         for (int i = 0; i < 61; i++) {
  58.             for (int j = 0; j < 61; j++) {
  59.                 double prob = (fr[i][j][0] + fr[i][j][1] + .0) / sumPairs;
  60.                 if (fr[i][j][0] + fr[i][j][1] > 0) {
  61.                     double p0 = (1.0 * fr[i][j][0]) / (fr[i][j][0] + fr[i][j][1]);
  62.                     double p1 = 1 - p0;
  63. //                    System.out.println("i = " + i + ", j = " + j + ", prob  = " +
  64. //                            df.format(prob) + ", 0 -> " + p0 + ", 1 -> " + p1);
  65.                 }
  66.             }
  67.         }
  68.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement