아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

스피드런

시간 제한8초메모리 제한512 MB

요약
각 구간의 승리 확률이 주어질 때, 세이브 지점을 골라 체크포인트 n까지 걸리는 기대 시간을 최소로 만든다.
난이도

보통10점 중 7점

유형
확률, 동적 계획법
정답자
아직 제출이 없습니다

문제

Infinite Chronicle -Princess Castle-는 단순한 롤플레잉 게임이다. 체크포인트는 00번부터 nn번까지 n+1n+1개 있고, 각 i=1,2,…,ni = 1, 2, \dots, n마다 체크포인트 i−1i-1에서 ii로 가는 일방통행 길이 하나씩 있다. 게임은 체크포인트 00에서 시작해 체크포인트 nn에서 끝난다. 길에는 몬스터가 나타나고 주인공은 몬스터와 싸운다. 어느 체크포인트에서든 진행 상황을 저장할 수 있고, 전투에서 지면 마지막으로 저장한 체크포인트에서 다시 시작할 수 있다. 게임을 시작할 때 체크포인트 00에서는 시간을 들이지 않고 자동으로 저장된다.

토끼 하나코는 이 게임을 좋아해서 스피드런에 도전한다. 하나코는 이 게임의 고수지만 무작위 요소 때문에 매번 이기지는 못한다. 하나코는 각 ii에 대해 체크포인트 i−1i-1에서 ii로 가는 길의 전투를 모두 이길 확률 pip_i를 계산해 두었다. 체크포인트 i−1i-1에서 출발할 때마다 정확히 1분 뒤에 확률 pip_i로 체크포인트 ii에 있고, 확률 1−pi1 - p_i로 마지막에 저장한 체크포인트에 돌아와 있다.

체크포인트에서 저장하는 데에도 1분이 걸리므로, 저장하지 않고 지나가는 편이 빠를 때도 있다. 게임을 끝내는 데 걸리는 기대 시간의 최솟값을 구하여라.

입력

입력은 여러 개의 데이터 집합으로 이루어지고, 데이터 집합은 최대 50개다. 각 데이터 집합은 두 줄이다. 첫째 줄에는 길의 개수 nn (1≤n≤1051 \le n \le 10^5)이 주어진다. 둘째 줄에는 이길 확률 p1,p2,…,pnp_1, p_2, \dots, p_n (0<pi≤10 < p_i \le 1)이 주어지고, 각 pip_i는 소수점 아래 두 자리로 적혀 있다. 입력의 마지막 줄에는 00 하나만 있으며, 이 줄은 데이터 집합이 아니다.

출력

각 데이터 집합마다 게임을 끝내는 기대 시간의 최솟값을 분 단위로 한 줄에 하나씩 소수점 아래 여섯 자리까지 출력한다.

예제2

  1. 예제 1

    입력
    2
    0.50 0.40
    2
    0.70 0.60
    4
    0.99 1.00 1.00 0.01
    0
    
    예상 출력
    5.500000
    4.047619
    104.010101
    
  2. 예제 2

    입력
    1
    1.00
    1
    0.01
    1
    0.50
    0
    
    예상 출력
    1.000000
    100.000000
    2.000000