DOJ logoDOJ
問題
最近追加された問題保存した問題Workbooks
カテゴリDLCコンテストグループチーム掲示板
ランキング
正解数ランキングストリークランキングDOJ Powerランキング
提出状況
問題募集ログイン新規登録
DOJ logoDOJ

OI形式のサブタスク採点、Eloレーティング、Discord認証を備えたオンラインジャッジです。

問題
問題一覧カテゴリ
コミュニティ
コンテストランキング掲示板お知らせ外部のコンテストを開催するガイド
アカウント
ログイン新規登録ジャッジ状態
ポリシー
利用規約DLCの利用規則プライバシーAPI 文書言語ランタイムコンテストの順位報酬レーティングとパフォーマンス
© 2026 DOJ
All rights reserved
解説

Bulb Queries

問題に戻る

解説

질의 구간을 [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
​