해설
질의 구간을 라고 하자. 켜져 있는 전구의 각 덩어리는 정확히 하나의 왼쪽 끝을 가진다. 따라서 덩어리의 개수는 덩어리의 왼쪽 끝인 위치의 개수와 같다.
에 대해, 번째 전구가 덩어리의 왼쪽 끝이면 , 아니면 인 확률변수 를 정의하자.
구간의 첫 위치에서는 왼쪽 전구를 고려하지 않으므로
이다. 에서는 번째 전구가 켜지고 번째 전구가 꺼져야 하므로, 독립성에 의해
이다.
기댓값의 선형성에 의해 답은
이다.
에 대해
를 미리 계산하고, 인 누적 합을 만들면 각 질의의 답은
로 에 계산할 수 있다.
전처리에는 , 모든 질의 처리에는 시간이 들며, 메모리 사용량은 이다.
입력 확률은 소수점 아래 최대 두 자리이므로, 각 확률을 부터 까지의 정수로 바꾸어 계산하면 모든 중간값을 정수로 정확히 저장할 수 있다. 또는 충분한 정밀도의 double을 사용할 수 있다. 최댓값은 약 이 될 수 있으므로 float은 사용하지 않는 것이 안전하다.
Solution written by GPT5.6