DOJ logoDOJ
题目
最近添加的题目收藏的题目Workbooks
分类DLC比赛小组团队讨论区
排名
解题数量排行榜连续解题排名DOJ Power 排行榜
评测状态
征题登录注册
DOJ logoDOJ

支持 OI 子任务计分、Elo 等级分和 Discord 认证的社区在线评测系统。

题目
题目列表分类
社区
比赛排名讨论区公告举办外部比赛指南
账号
登录注册评测状态
政策
服务条款DLC 使用规则隐私政策API 文档语言运行环境比赛排名奖励评级与表现
© 2026 DOJ
保留所有权利
题解

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
​