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

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

Pegs and Legs

시간 제한6초메모리 제한1024 MB

요약
디스크가 각 못에서 주어진 확률로 왼쪽이나 오른쪽으로 미끄러지거나 끼는 유향 비순환 그래프에서, 기대 점수를 최대로 만드는 낙하 지점을 찾는다.
난이도

보통10점 중 7점

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

문제

Pegs and Legs는 거의 수직인 판 위로 원반이 미끄러져 내려오는 게임이다. 판 아래쪽에는 원반이 떨어질 자리가 있고, 이를 leg라 부른다. 원반이 leg에 들어가면 그 leg가 가진 점수를 얻는다.

원반은 판 위쪽에서 시작해 어떤 drop point peg 또는 drop point leg에 직접 떨어뜨린다. 원반이 peg에 부딪히면 세 가지 중 하나가 일어난다. (1) 확률 ℓ\ell로 왼쪽으로 떨어진다. (2) 확률 rr로 오른쪽으로 떨어진다. (3) 확률 1−ℓ−r1 - \ell - r로 걸려서 멈춘다. 확률은 peg마다 다를 수 있다. 원반이 왼쪽이나 오른쪽으로 떨어지면 다른 peg 또는 leg에 떨어진다. 원반이 걸려서 멈추면 위쪽의 어떤 drop point에서 다시 떨어뜨려야 한다. 아래 그림은 3번째 예제 입력을 나타내며, 어두운 peg 두 개가 drop point이다.

중력 때문에 원반을 다시 떨어뜨리지 않는 한 같은 peg에 두 번 부딪히는 일은 없다. 원반이 leg에 들어가면 게임이 끝나고 그 leg의 값을 얻는다. 플레이어가 얻을 수 있는 기대 점수의 최댓값은 얼마인가?

입력

첫 번째 줄에는 leg의 개수 LL (1≤L≤100 0001 \leq L \leq 100\,000)과 peg의 개수 PP (1≤P≤100 0001 \leq P \leq 100\,000)가 주어진다. leg는 11부터 LL까지 번호가 매겨지고, peg는 L+1L+1부터 L+PL+P까지 번호가 매겨진다.

다음 LL개의 줄에는 leg에 대한 정보가 순서대로 주어진다. 각 줄에는 이 leg의 값 vv (1≤v≤1 000 0001 \leq v \leq 1\,000\,000)가 하나의 정수로 주어진다.

다음 PP개의 줄에는 peg에 대한 정보가 순서대로 주어진다. 각 줄은 이 peg에 부딪힌 뒤 원반이 왼쪽으로 떨어질 확률 ℓ\ell (0<ℓ<10 < \ell < 1)과 오른쪽으로 떨어질 확률 rr (0<r<10 < r < 1, ℓ+r≤1\ell + r \leq 1)이 실수로 주어지고, 이어서 왼쪽으로 떨어질 때 도달하는 peg/leg의 번호 xx (1≤x≤L+P1 \leq x \leq L+P)와 오른쪽으로 떨어질 때 도달하는 peg/leg의 번호 yy (1≤y≤L+P1 \leq y \leq L+P)가 정수로 주어진다. xx와 yy는 이 peg의 번호보다 작음이 보장된다.

모든 실수는 소수점 아래 세 자리까지 정확히 주어진다. 어떤 peg 또는 leg로 떨어지는 peg가 하나도 없다면, 그 peg 또는 leg는 drop point이다.

어떤 peg에서든 그 peg에 도달한 뒤 원반이 결국 걸려서 멈출 확률은 0.99990.9999 이하임이 보장된다.

출력

플레이어가 얻을 수 있는 기대 점수의 최댓값을 출력한다. 절대 오차 또는 상대 오차가 10−610^{-6} 이하인 답은 정답으로 인정된다.

예제3

  1. 예제 1

    입력
    2 4
    344969
    539194
    0.508 0.318 1 1
    0.990 0.009 1 3
    0.807 0.041 3 1
    0.225 0.617 4 4
    
    예상 출력
    539194.0000000000
    
  2. 예제 2

    입력
    2 8
    684841
    506003
    0.277 0.692 1 1
    0.007 0.864 2 1
    0.783 0.067 2 1
    0.962 0.026 3 1
    0.580 0.171 4 4
    0.997 0.003 1 6
    0.548 0.207 8 7
    0.537 0.238 5 7
    
    예상 출력
    684556.2033270609
    
  3. 예제 3

    입력
    3 3
    11
    12
    10
    0.500 0.500 1 2
    0.800 0.100 1 4
    0.600 0.400 4 3
    
    예상 출력
    11.0555555556