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

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

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

Mountain Climbing Game

返回题目

题解

prp_rpr​을 rrr의 왼쪽에서 ArA_rAr​보다 높은 가장 가까운 지점이라 하고, 없으면 000으로 둔다. 다다스의 승리 조건은 다음과 같다.

  • Al<ArA_l<A_rAl​<Ar​이면 구간 (l,r)(l,r)(l,r) 안에 보다 높은 지점이 있어야 한다.

이제 오른쪽 끝점 rrr을 왼쪽부터 처리한다. 펜윅 트리에 앞선 높이들을 넣고, F(v)F(v)F(v)를 그중 vvv 이하인 높이의 수로 둔다. 동시에 높이가 내림차순인 인덱스 스택을 유지한다. ArA_rAr​보다 낮은 원소를 모두 뺀 개수를 이라 하면, 남은 꼭대기가 이다.

두 경우를 합친 rrr의 기여는

F(hr−1)−cr,hr={Aprpr>0,Arpr=0F(h_r-1)-c_r,\qquad h_r=\begin{cases}A_{p_r}&p_r>0,\\A_r&p_r=0\end{cases}F(hr​−1)−

이다. 이를 더한 뒤 ArA_rAr​을 펜윅 트리에 넣고 rrr을 스택에 넣는다. 시간 복잡도는 O(Nlog⁡N)O(N\log N)O(NlogN), 공간 복잡도는 O(N)O(N)이다.

증명

Al<ArA_l<A_rAl​<Ar​이면 다다스는 AlA_lA보다 높은 내부 지점 중 가장 오른쪽으로 이동하여 바로 이길 수 있다. 남은 내부 높이는 모두 보다 낮으므로 따스가 움직일 수 없기 때문이다. 그런 지점이 없으면 다다스가 움직일 수 없다.

AlA_l
Al​
  • Al>ArA_l>A_rAl​>Ar​이면 l<prl<p_rl<pr​이고 Al<AprA_l<A_{p_r}Al​<Apr​​이어야 한다.
  • crc_r
    cr​
    prp_rpr​
    cr​
    ,
    hr​
    =
    {Apr​​Ar​​pr​>0,pr​=0​
    O(N)
    l
    ​
    AlA_lAl​

    Al>ArA_l>A_rAl​>Ar​이고 l<prl<p_rl<pr​, Al<AprA_l<A_{p_r}Al​<Apr​​이면 다다스는 prp_rpr​로 이동하여 바로 이긴다. pr≤lp_r\leq lpr​≤l이면 이동할 수 없다. 나머지 경우에는 다다스가 어디로 이동하든 그 위치 iii는 prp_rpr​보다 왼쪽이다. 따스는 iii의 오른쪽에서 ArA_rAr​보다 높은 가장 왼쪽 지점으로 이동할 수 있고, 두 말 사이에는 다다스보다 높은 지점이 남지 않는다.

    Al<ArA_l<A_rAl​<Ar​인 후보는 F(Ar−1)F(A_r-1)F(Ar​−1)개이다. 그중 지는 경우는 rrr이 lll의 오른쪽에서 처음 만난 더 높은 지점인 경우로, 방금 스택에서 빠진 crc_rcr​개와 정확히 일치한다. 따라서 이 종류의 승리 쌍은 F(Ar−1)−crF(A_r-1)-c_rF(Ar​−1)−cr​개이다.

    Al>ArA_l>A_rAl​>Ar​인 승리 쌍은 Ar<Al<AprA_r<A_l<A_{p_r}Ar​<Al​<Apr​​을 만족한다. prp_rpr​과 rrr 사이의 높이는 모두 ArA_rAr​보다 낮으므로 이 범위의 높이는 자동으로 prp_rpr​의 왼쪽에 있다. 따라서 pr>0p_r>0pr​>0이면 F(Apr−1)−F(Ar)F(A_{p_r}-1)-F(A_r)F(Apr​​−1)−F(A개를 더한다. 아직 ArA_rAr​을 넣지 않았으므로 F(Ar)=F(Ar−1)F(A_r)=F(A_r-1)F(Ar​)=F(Ar​−1)이고, 두 식을 합치면 본문의 기여식을 얻는다.

    r
    ​
    )