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

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

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

디도스

문제로 돌아가기

해설

Claim. 공격의 총 위력을 최대화하는 해 중, 다음 성질을 만족하는 것이 존재한다.

  • 어떤 시각 t∈{1,2,…,k}t \in \{1, 2, \dots, k\}t∈{1,2,…,k}가 존재해, 시각 ttt에 공격할 수 있는 컴퓨터는 모두 시각 ttt에 공격한다.

Proof. 어떠한 최적해에 대해, 그러한 ttt가 존재하지 않는다고 가정하자. 가장 많은 수의 컴퓨터가 공격하는 시각 중 하나를 tmaxt_{max}tmax​라 하자. 이때, 가정에 의해, tmaxt_{max}tmax​에 공격할 수 있지만 공격하지 않는 컴퓨터 가 있다. 해당 컴퓨터가 공격하는 시각을 라 하고, 시각 와 에 공격하는 컴퓨터의 수를 각각 와 라 하자.

이때, 컴퓨터 xxx가 공격하는 시각을 tmaxt_{max}tmax​로 바꾸면 더 나은 해가 됨을 보인다. 이 변화로 인해 생기는 공격의 총 위력의 변화량은

((cmax+1)2+(cx−1)2)−(cmax2+cx2)=2(cmax−cx)+2\begin{aligned} \left((c_{max}+1)^2+(c_x-1)^2 \right) - (c_{max}^2 + c_x^2) = 2(c_{max} - c_x) + 2 \end{aligned}((cmax

tmaxt_{max}tmax​의 정의에 의해 cmax≥cxc_{max} \ge c_xcmax​≥c이므로, 위 식의 값은 항상 양수이다. 따라서, 현재 해가 최적해라는 가정이 잘못되었고, 귀류법에 의해 원래 명제가 성립한다.

이제 위 성질과 동적 계획법을 이용해 문제를 해결한다. DDD를 다음과 같이 정의하자.

  • D[l][r]D[l][r]D[l][r]: 공격할 수 있는 시각의 범위가 [l,r][l, r][l,r]에 포함되는 컴퓨터만 고려했을 때, 총 공격 위력의 최댓값

위 성질은 어떤 [l,r][l, r][l,r]에 대해 공격 시각 범위가 [l,r][l, r][l,r]에 포함되는 컴퓨터들만 고려해도 성립한다. 따라서, 어떤 시각 ttt를 골라, 해당 시각에 공격할 수 있는 모든 컴퓨터는 해당 시각에 공격하게 할 수 있다. 이를 이용하면, 다음과 같은 점화식을 세울 수 있다.

DP[l][r]=max⁡l≤t≤r(DP[l][t−1]+f(l,r,t)2+DP[t+1][r])DP[l][r] = \max_{l \le t \le r} \left( DP[l][t-1] + f(l, r, t)^2 + DP[t+1][r] \right)DP[l][r]=l≤t≤

단, l>rl > rl>r일 때 DP[l][r]=0DP[l][r] = 0DP[l][r]=0으로 정의하며, f(l,r,t)f(l, r, t)f(l,r는 공격 시각이 에 포함되는 컴퓨터 중 시각 에 공격할 수 있는 컴퓨터의 수를 나타낸다. 따라서, 를 에 구할 수 있는 방법이 있다면, 위 풀이를 이용해 에 문제를 해결할 수 있을 것이다.

어떤 컴퓨터의 공격 시각 범위가 [li,ri][l_i, r_i][li​,ri​]일 때, 해당 컴퓨터의 공격 시각이 [l,r][l, r][l,r]에 포함되고, 시각 에 공격할 수 있을 조건은, 의 가정 아래 다음과 같이 생각할 수 있다.

  • l≤li≤tl \le l_i \le tl≤li​≤t
  • t≤ri≤rt \le r_i \le rt≤r

위 두 조건이 모두 만족하는 경우에만 iii번 컴퓨터가 f(l,r,t)f(l, r, t)f(l,r,t)에 111만큼의 기여를 할 것이다. 위 조건은 (li,ri)(l_i, r_i)(l의 2차원 누적합을 통해 구할 수 있고, 이는 시간에 전처리해줄 수 있다. 따라서 문제를 에 해결할 수 있다.

xxx
txt_xtx​
tmaxt_{max}tmax​
txt_xtx​
cmaxc_{max}cmax​
cxc_xcx​
​
+
1
)2
+
(
cx​
−
1
)2
)
−
(
cmax2​
+
cx2​
)
=
2
(
cmax​
−
cx​
)
+
2
​
x
​
r
max
​
(DP[l][t−1]+f(l,r,t)2+DP[t+1][r])
,
t
)
[l,r][l, r][l,r]
ttt
f(l,r,t)f(l, r, t)f(l,r,t)
O(1)O(1)O(1)
O(k3)O(k^3)O(k3)
tt
t
l≤t≤rl \le t \le rl≤t≤r
i
​
≤
r
i
​
,
ri​
)
O(n+k2)O(n+k^2)O(n+k2)
O(n+k3)O(n+k^3)O(n+k3)