Notice
Recent Posts
Recent Comments
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Archives
Today
Total
관리 메뉴

블로그 언저리인 무언가

[백준/BOJ] 13703 물벼룩의 생존 확률 본문

Programming/BOJ

[백준/BOJ] 13703 물벼룩의 생존 확률

he1fire 2020. 9. 22. 14:53
728x90

문제 : 13703 물벼룩의 생존확률

 

13703번: 물벼룩의 생존확률

수면에서 k 센티미터 아래에 있는 물벼룩은 1초마다 각각 1/2의 확률로 위 또는 아래로 1 센티미터 이동한다.  물벼룩은 수면에 닿자마자 기다리고 있던 물매암이들에 의해 먹혀 없어진다.  예를

www.acmicpc.net

1초마다 1/2 확률로 위 또는 아래로 이동할 때,

시간이 끝날 때까지 생존해있는 경우의 수를 구하면 된다.

수면에 닿았을 때 남은 움직임과 상관없이 모두 실패하고

남은 움직임 횟수보다 더 깊이 있는 상태에서는 2^횟수만큼 성공하므로

memoization기법을 활용해 Top-Down 방식의 DP를 짜서

이전 결과 값을 저장해 꺼내서 출력했다.


Code

#include <bits/stdc++.h>
#define ll long long
using namespace std;
ll N, M, arr[70][70];
ll DP(ll now, ll x){
    if (arr[now][x]!=-1)
        return arr[now][x];
    else if (x<now)
        return pow(2,x);
    else if (now==0)
        return 0;
    else
        return arr[now][x]=DP(now+1,x-1)+DP(now-1,x-1);
}
int main(){
    ios::sync_with_stdio(0);
    cin.tie(0);
    cin >> N >> M;
    fill(&arr[0][0],&arr[69][70],-1);
    cout << DP(N,M);
    return 0;
}
728x90

'Programming > BOJ' 카테고리의 다른 글

[백준/BOJ] 14499 주사위 굴리기  (0) 2020.09.23
[백준/BOJ] 4811 알약  (0) 2020.09.22
[백준/BOJ] 4386 별자리 만들기  (0) 2020.09.22
[백준/BOJ] 14890 경사로  (0) 2020.09.22
[백준/BOJ] 1057 토너먼트  (0) 2020.09.21
Comments