각 구간의 승리 확률이 주어질 때, 세이브 지점을 골라 체크포인트 n까지 걸리는 기대 시간을 최소로 만든다.
보통7확률동적 계획법아직 제출이 없습니다시간 제한8초메모리 제한512 MBInfinite Chronicle -Princess Castle-는 단순한 롤플레잉 게임이다. 체크포인트는 0번부터 n번까지 n+1개 있고, 각 i=1,2,…,n마다 체크포인트 i−1에서 i로 가는 일방통행 길이 하나씩 있다. 게임은 체크포인트 0에서 시작해 체크포인트 n에서 끝난다. 길에는 몬스터가 나타나고 주인공은 몬스터와 싸운다. 어느 체크포인트에서든 진행 상황을 저장할 수 있고, 전투에서 지면 마지막으로 저장한 체크포인트에서 다시 시작할 수 있다. 게임을 시작할 때 체크포인트 0에서는 시간을 들이지 않고 자동으로 저장된다.
토끼 하나코는 이 게임을 좋아해서 스피드런에 도전한다. 하나코는 이 게임의 고수지만 무작위 요소 때문에 매번 이기지는 못한다. 하나코는 각 i에 대해 체크포인트 i−1에서 i로 가는 길의 전투를 모두 이길 확률 pi를 계산해 두었다. 체크포인트 i−1에서 출발할 때마다 정확히 1분 뒤에 확률 pi로 체크포인트 i에 있고, 확률 1−pi로 마지막에 저장한 체크포인트에 돌아와 있다.
체크포인트에서 저장하는 데에도 1분이 걸리므로, 저장하지 않고 지나가는 편이 빠를 때도 있다. 게임을 끝내는 데 걸리는 기대 시간의 최솟값을 구하여라.
입력은 여러 개의 데이터 집합으로 이루어지고, 데이터 집합은 최대 50개다. 각 데이터 집합은 두 줄이다. 첫째 줄에는 길의 개수 n (1≤n≤105)이 주어진다. 둘째 줄에는 이길 확률 p1,p2,…,pn (0<pi≤1)이 주어지고, 각 pi는 소수점 아래 두 자리로 적혀 있다. 입력의 마지막 줄에는 0 하나만 있으며, 이 줄은 데이터 집합이 아니다.
각 데이터 집합마다 게임을 끝내는 기대 시간의 최솟값을 분 단위로 한 줄에 하나씩 소수점 아래 여섯 자리까지 출력한다.