문제 링크
- https://icpc.me/21100
사용 알고리즘
- 볼록 껍질
풀이
에서 시작했을 때 얻을 수 있는 값을 $f(x)$라고 하면, $f(x) = \max\lbrace f(x), (f(x-1)+f(x+1))/2\rbrace$를 무한히 반복한다고 생각할 수 있고, $f(x)$는 $(i, A_i)$들의 Convex Hull 형태가 됩니다.
만약 $(i, A_i)$가 Convex Hull 위의 점이라면 정답에 $A_i\cdot N^{-1}$을 더하면 되고, 그렇지 않다면 $i$와 왼쪽/오른쪽에서 가장 가까운 Convex Hull 위의 점을 찾아서 확률을 계산해서 더하면 됩니다.
전체 코드
1 |
|