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

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

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

따스나라의 중계기

문제로 돌아가기

해설

조합의 값을 (nr)\binom{n}{r}(rn​)로 나타내며, 범위를 벗어난 경우에는 000으로 정의한다. 모든 조합은 998 244 353998\,244\,353998244353으로 나눈 나머지로 계산한다.

D=1D=1D=1인 경우

지름이 111 이하라는 것은 선택한 모든 중계기 쌍이 직접 통신할 수 있다는 뜻이다.

선택한 중계기 중 높이가 가장 낮은 것들을 생각하자. 그중 가장 왼쪽 중계기의 위치를 ppp로 고정한다. 다른 선택된 위치 qqq는 다음 조건을 만족해야 한다.

  • p<qp<qp<q이면 hq≥hph_q\ge h_phq​≥hp​이고, 와 가 직접 통신할 수 있다.

왼쪽에서 높이가 같은 위치를 제외하는 이유는 ppp가 가장 왼쪽의 최저 중계기이기 때문이다. 오른쪽에서는 높이가 같은 중계기를 하나 더 선택할 수 있다.

위 조건을 만족하는 위치들 중 아무 위치나 함께 선택해도 전체가 완전 그래프가 된다. 예를 들어 p<a<bp<a<bp<a<b이고 ppp가 bbb와 직접 통신한다면, hbh_bhb​는 와 사이의 모든 높이보다 크므로 와 도 직접 통신한다. 왼쪽이나 의 양쪽에 위치한 두 중계기에 대해서도 같은 방식으로 확인할 수 있다.

ppp의 오른쪽 후보는 다음과 같은 사슬을 이룬다.

  • 처음에는 오른쪽에서 처음 등장하는 높이 hph_php​ 이상의 산으로 이동한다.
  • 그 다음부터는 현재 산보다 엄격히 높은 산 중 오른쪽에서 처음 등장하는 산으로 이동한다.

왼쪽 후보는 이전의 엄격히 높은 산을 계속 따라가면 된다. 다음 크거나 같은 원소와 이전 또는 다음의 엄격히 큰 원소는 단조 스택으로 구할 수 있다. 각 사슬의 길이도 점화식으로 계산할 수 있다.

ppp에서 선택 가능한 다른 위치의 수를 cpc_pcp​라 하면, ppp를 기준으로 세는 방법의 수는

(cpK−1)\binom{c_p}{K-1}(K−1cp​​)

이다. 모든 ppp에 대해 더하면 된다. 각 설치 방법은 가장 왼쪽의 최저 중계기에 의해 정확히 한 번 세어진다.

D≥2D\ge 2D≥2인 경우

선택한 중계기의 최고 높이를 HHH라 하고, 높이가 HHH인 선택된 위치를

p1<p2<⋯<pmp_1<p_2<\cdots<p_mp1​<p2​<⋯<p

이라 하자.

높이가 HHH 이상인 모든 산을 위치 순서대로 나열한다. p1,p2,…,pmp_1,p_2,\ldots,p_mp1​,p2​,…,p은 이 나열에서 연속해야 한다. 사이에 선택되지 않은 높이 이상의 산이 있다면, 그 산을 사이에 두고 양쪽의 어떤 선택된 중계기도 직접 통신할 수 없으므로 그래프가 연결되지 않는다.

이 나열에서 p1p_1p1​의 바로 이전 위치를 q0q_0q0​, pmp_mp의 바로 다음 위치를 이라 하자. 존재하지 않으면 각각 , 로 생각한다. 다음 세 수를 정의한다.

L=p1−q0−1,I=pm−p1−m+1,R=qm+1−pm−1.\begin{align*} L &= p_1-q_0-1,\\ I &= p_m-p_1-m+1,\\ R &= q_{m+1}-p_m-1. \end{align*}LIR​

최고 높이보다 낮은 중계기는 q0q_0q0​과 qm+1q_{m+1}qm+1​ 사이에서만 선택할 수 있다. LLL은 첫 최고 중계기의 왼쪽 영역, 은 마지막 최고 중계기의 오른쪽 영역, 는 최고 중계기들 사이의 내부 영역에 있는 후보 수이다.

최고 중계기 p1,p2,…,pmp_1,p_2,\ldots,p_mp1​,p2​,…,pm​은 순서대로 경로를 이룬다. 내부 영역의 중계기는 양옆의 가까운 최고 중계기에 연결된다. 왼쪽 영역의 중계기는 에만, 오른쪽 영역의 중계기는 에만 연결될 수 있다.

왼쪽 영역에서 하나 이상 선택했는지를 aaa, 오른쪽 영역에서 하나 이상 선택했는지를 bbb라 하자. a,b∈{0,1}a,b\in\{0,1\}a,b∈{0,1}이다. D≥2D\ge2D≥2이므로 같은 영역이나 같은 내부 구간에 있는 두 낮은 중계기 사이의 거리 는 자동으로 허용된다. 지름 조건에서 추가로 확인할 값은

m−1+a+bm-1+a+bm−1+a+b

이며, 이것이 DDD 이하여야 한다.

남은 K−mK-mK−m개의 중계기를 고르는 방법은 다음과 같다.

  • m≤D−1m\le D-1m≤D−1이면 양쪽 바깥 영역을 모두 사용해도 된다. (L+I+RK−m)\binom{L+I+R}{K-m}(K−mL+I+R​

이제 모든 가능한 최고 중계기 구간을 열거한다. 산을 높이 내림차순으로 처리하면서, 현재 높이 이상의 산 위치를 순서 집합에 저장한다. 같은 높이의 위치는 한꺼번에 삽입한다. 순서 집합에서 현재 높이의 위치들이 이루는 각 연속 구간마다 길이 D+1D+1D+1 이하의 모든 부분 구간을 열거한다. 각 부분 구간이 하나의 p1,…,pmp_1,\ldots,p_mp1​,…,pm​ 후보가 된다.

각 위치는 왼쪽 끝점으로 최대 D+1D+1D+1개의 구간만 만든다. 따라서 시간 복잡도는 테스트 케이스마다

O(Nlog⁡N+ND)O(N\log N+ND)O(NlogN+ND)

이고, 메모리 복잡도는 O(N)O(N)O(N)이다. D=1D=1D=1인 경우의 시간 복잡도는 O(N)O(N)O(N)이다.

Solution written by GPT5.6

pp
p
qqq
  • q<pq<pq<p이면 hq>hph_q>h_phq​>hp​이고, ppp와 qqq가 직접 통신할 수 있다.
  • ppp
    bbb
    aaa
    bbb
    ppp
    m
    ​
    m
    ​
    HHH
    m
    ​
    qm+1q_{m+1}qm+1​
    000
    N+1N+1N+1
    =p1​−q0​−1,
    =pm​−p1​−m+1,
    =qm+1​−pm​−1.
    ​
    RR
    R
    III
    p1p_1
    p1​
    pmp_mpm​
    222
    )
  • m=Dm=Dm=D이면 양쪽 바깥 영역을 동시에 사용하면 안 된다. (I+RK−m)+(L+IK−m)−(IK−m)\binom{I+R}{K-m}+\binom{L+I}{K-m}-\binom{I}{K-m}(K−mI+R​)+(K−mL+I​)−(K−mI​)
  • m=D+1m=D+1m=D+1이면 두 바깥 영역을 모두 사용하면 안 된다. (IK−m)\binom{I}{K-m}(K−mI​)
  • m>D+1m>D+1m>D+1이면 불가능하다.