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

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

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

Flattening the Mountain

問題に戻る

解説

각 위치 iii를 덮는 사용된 폭탄의 수를 CiC_iCi​라고 하자. 폭탄을 모두 사용한 뒤 iii번째 높이가 000이 되기 위한 필요충분조건은 Ci≥AiC_i \geq A_iCi​≥Ai​이다. 따라서 각 폭탄을 최대 한 번 선택하면서 모든 구간 덮기 하한을 만족하는 최소 비용 부분집합을 구하면 된다.

정점 0,1,…,N0,1,\ldots,N0,1,…,N으로 이루어진 최소 비용 유량 그래프를 만든다.

  • 각 iii (1≤i≤N1 \leq i \leq N1≤i≤N)에 대해 간선 i−1→ii-1 \rightarrow ii−1→i를 용량 M−AiM-A_i, 비용 으로 추가한다.

정점 000에서 정점 NNN으로 정확히 MMM의 유량을 보내는 최소 비용을 구한다. Ai>MA_i>MAi​>M인 위치가 있으면 용량 M−를 만들 수 없으므로 즉시 불가능하다.

위치 iii에 대응하는 컷을 생각하자. 이 컷은 정점 0,1,…,i−10,1,\ldots,i-10,1,…,i−1과 정점 i,i+1,…,Ni,i+1,\ldots,Ni,i+1,…을 나눈다. 그래프의 모든 원래 간선은 번호가 작은 정점에서 큰 정점으로 향하므로, 값이 인 유량은 이 컷을 정확히 만큼 통과한다.

간선 i−1→ii-1 \rightarrow ii−1→i가 운반할 수 있는 유량은 최대 M−AiM-A_iM−Ai​이다. 따라서 나머지 유량 중 최소 AiA_iA는 폭탄 간선을 통해 컷을 건너야 한다. 폭탄 간선 가 이 컷을 건너는 것은 정확히 일 때이다. 그러므로 유량이 사용하는 폭탄 간선들은 위치 를 적어도 번 덮는다.

반대로 조건을 만족하는 폭탄 부분집합이 있다고 하자. 선택한 각 폭탄에 서로 다른 하나의 유량 경로를 배정한다. 그 경로는 000에서 Lj−1L_j-1Lj​−1까지 비용 000 간선을 지나고, 폭탄 간선 Lj−1→RjL_j-1 \rightarrow R_jL를 지난 뒤, 다시 비용 간선을 따라 으로 간다. 선택하지 않은 나머지 경로는 모든 비용 간선을 지난다.

위치 iii의 비용 000 간선을 지나는 경로 수는 M−CiM-C_iM−Ci​이다. Ci≥AiC_i \geq A_iC이므로 이며 모든 용량 제한을 만족한다. 따라서 모든 가능한 폭탄 선택은 같은 비용의 값 유량으로 표현할 수 있다.

모든 용량이 정수이므로 최소 비용 유량의 최적해도 정수 유량으로 얻을 수 있다. 용량이 111인 폭탄 간선에 유량이 흐르는지를 해당 폭탄의 선택 여부로 해석하면 된다. 두 방향의 대응에서 비용도 정확히 보존되므로 최소 비용 유량의 값이 정답이다.

정점 수는 N+1N+1N+1, 간선 수는 O(N+M)O(N+M)O(N+M)이다. 잠재치를 사용하는 다익스트라 기반 연속 최단 경로 알고리즘으로 최대 MMM번 증강하면 시간 복잡도는 O(M(N+M)log⁡N)O(M(N+M)\log N)이고, 공간 복잡도는 이다.

Solution written by GPT5.6

M−
Ai​
000
  • 각 폭탄 jjj에 대해 간선 Lj−1→RjL_j-1 \rightarrow R_jLj​−1→Rj​를 용량 111, 비용 WjW_jWj​로 추가한다.
  • AiM-A_i
    M−Ai​
    ,
    N
    MMM
    MMM
    i​
    Lj−1→RjL_j-1 \rightarrow R_jLj​−1→Rj​
    Lj≤i≤RjL_j \leq i \leq R_jLj​≤i≤Rj​
    iii
    AiA_iAi​
    j​
    −
    1→
    Rj​
    000
    NNN
    000
    i​
    ≥
    Ai​
    M−Ci≤M−AiM-C_i \leq M-A_iM−Ci​≤M−Ai​
    MMM
    O
    (
    M
    (
    N
    +
    M)logN)
    O(N+M)O(N+M)O(N+M)