DOJ logoDOJ
문제
최근 추가된 문제들저장한 문제
카테고리DLC대회그룹팀게시판
랭킹
문제 풀이 랭킹스트릭 랭킹DOJ Power 랭킹
현황
문제 제안로그인회원가입
DOJ logoDOJ

OI 서브태스크 채점, Elo 레이팅, Discord 인증을 갖춘 커뮤니티 온라인 저지.

문제
문제 목록카테고리
커뮤니티
대회랭킹게시판공지사항외부 대회 개최이용 안내
계정
로그인회원가입채점 현황
정책
이용약관DLC 이용 규칙개인정보 처리방침API 사용 설명서언어별 채점 환경대회 순위 보상레이팅과 퍼포먼스
© 2026 DOJ
모든 권리 보유
해설

전구의 쿼리

문제로 돌아가기

해설

질의 구간을 [l,r][l,r][l,r]라고 하자. 켜져 있는 전구의 각 덩어리는 정확히 하나의 왼쪽 끝을 가진다. 따라서 덩어리의 개수는 덩어리의 왼쪽 끝인 위치의 개수와 같다.

i∈[l,r]i \in [l,r]i∈[l,r]에 대해, iii번째 전구가 덩어리의 왼쪽 끝이면 111, 아니면 000인 확률변수 XiX_iXi​를 정의하자.

구간의 첫 위치에서는 왼쪽 전구를 고려하지 않으므로

E[Xl]=Pl\mathbb{E}[X_l]=P_lE[Xl​]=Pl​

이다. i>li>li>l에서는 iii번째 전구가 켜지고 i−1i-1i−1번째 전구가 꺼져야 하므로, 독립성에 의해

E[Xi]=Pi(1−Pi−1)\mathbb{E}[X_i]=P_i(1-P_{i-1})E[Xi​]=Pi​(1−P

이다.

기댓값의 선형성에 의해 답은

Pl+∑i=l+1rPi(1−Pi−1)P_l+\sum_{i=l+1}^{r} P_i(1-P_{i-1})Pl​+i=l+1∑r​

이다.

2≤i≤N2 \le i \le N2≤i≤N에 대해

Ai=Pi(1−Pi−1)A_i=P_i(1-P_{i-1})Ai​=Pi​(1−P

를 미리 계산하고, Si=∑j=2iAjS_i=\sum_{j=2}^{i}A_jSi​=∑j=2i​A인 누적 합을 만들면 각 질의의 답은

Pl+Sr−SlP_l+S_r-S_lPl​+Sr​−Sl​

로 O(1)O(1)O(1)에 계산할 수 있다.

전처리에는 O(N)O(N)O(N), 모든 질의 처리에는 O(Q)O(Q)O(Q) 시간이 들며, 메모리 사용량은 O(N)O(N)O(N)이다.

입력 확률은 소수점 아래 최대 두 자리이므로, 각 확률을 000부터 100100100까지의 정수로 바꾸어 계산하면 모든 중간값을 정수로 정확히 저장할 수 있다. 또는 충분한 정밀도의 double을 사용할 수 있다. 최댓값은 약 25 00025\ 00025 000이 될 수 있으므로 float은 사용하지 않는 것이 안전하다.

Solution written by GPT5.6

i−1​
)
Pi​
(
1
−
Pi−1​)
i−1
​
)
j
​