어제 저녁 8시에 열린 매치..
시간대도 좋았고 요즘 ACM 시즌 + 구글 코드잼 시즌 이라 상당히 많은 사람이 참여했다..
나는 저번 상금매치도 시간대가 안맞아서 참가 못하고 오랜만에 참가했는데..
완전 삽질끝에 또다시 망쳐버렸다.. 아.. 나의 rating은 어디로 가고있는것일까.. ㅠ_ㅠ

250 점 문제는 맞았다고 생각했는데 결국 system test fail 당했다..
우리방에서 나혼자 system test fail 이라서 완전 쪽팔렸다.. -_-;
대부분의 case 는 통과하는데 특정 case 에서 소숫점 몇째자리부터 틀리기 시작한다..
이거 디버깅할수도없고.. 도대체 뭐가 틀린건지.. 쩝..

근데 20위 안에 한국사람이 두명이나 있네.. 대단..~





Level1 - TheBlackJackDivOne
카드를 몇장 받았고 현재까지 카드의 숫자 합이 21 이 넘을때까지 계속 카드를 받아야 한다.. 앞으로 카드를 평균 몇장을 더 받을것인지.. 기대값 구하기..

가능한 상태가 얼마 없기때문에 굳이 memorization 할것까지도 없었다..
괜히 어렵게 생각해서 뭔가 틀렸거나 precision error 거나..

  1 #include <iostream>
  2 #include <cstdio>
  3 #include <algorithm>
  4 #include <vector>
  5 #include <string>
  6 #include <map>
  7 using namespace std;
  8 //#define min(x, y) ((x) > (y) ? (y) : (x))
  9 //#define max(x, y) ((x) > (y) ? (x) : (y))
 10 //#define INF 999999999
 11
 12 int get_val(char ch)
 13 {
 14     if (ch >= '2' && ch <= '9')
 15         return ch - '0';
 16     if (ch == 'A')
 17         return 11;
 18     return 10;
 19 }
 20
 21 double recur(int sum, int* cnt, int left)
 22 {
 23     int i;
 24     double res, p;
 25     if (sum >= 21)
 26         return 0;
 27     res = 1.0;
 28     for (i = 2; i <= 11; i++) {
 29         if (cnt[i]) {
 30             p = (double)cnt[i] / left;
 31             cnt[i]--;
 32             res += p * recur(sum + i, cnt, left-1);
 33             cnt[i]++;
 34         }
 35     }
 36     return res;
 37 }
 38
 39 class TheBlackJackDivOne {
 40 public:
 41
 42 double expected(vector <string> cards)
 43 {
 44     int i, k;
 45     int sum;
 46     int cnt[100];
 47     double res;
 48     for (i = 2; i <= 9; i++) {
 49         cnt[i] = 4;
 50     }
 51     cnt[10] = 16;
 52     cnt[11] = 4;
 53     sum = 0;
 54     for (i = 0; i < cards.size(); i++) {
 55         k = get_val(cards[i][0]);
 56         cnt[k]--;
 57         sum += k;
 58     }
 59     res = recur(sum, cnt, 52-cards.size());
 60     return res;
 61 }
 62
 63 };



Level2 - TheCardShufflingDivOne



to be updated..



Level3 - TheCardLineDivOne



to be updated..



to Top