题解
ai의 깊이를 di라고 하자. 한 사람의 기운은 자신과 모든 조상의 가문 합에 한 번씩 포함된다. 모든 기운의 합이 0이므로 구하려는 전체 합은
i=0∑2Ns(i)=
이다.
작은 N의 정확한 판정. a1,…,aj를 처리했을 때, 현재 최대 깊이가 이고 가중 깊이 합이 인 상태의 도달 가능성을 저장한다. 다음 정점의 깊이는 이상 이하에서 자유롭게 고를 수 있다. 깊이를 로 고르면 최대 깊이는 가 되고, 합에는 다음 정점의 기운과 의 곱을 더한다. 인 모든 경우를 미리 계산한다.
최솟값과 최댓값. 다음 함수를 정의한다.
FN(t)=
가능한 전체 합의 최솟값 LN과 최댓값 RN은
LN=−0≤t≤N
이다. FN과 BN은 정수 구간에서 오목하다. 인접한 두 값의 대소를 비교하는 이분 탐색으로 각 최댓값을 구할 수 있다. 최댓값을 만드는 가장 작은 인덱스를 각각 p,q라고 하자. 동률이면 반드시 가장 작은 인덱스를 선택한다.
큰 N의 정확한 판정. N≥13에서는 다음 도달 가능성 분류를 사용한다.
- k<LN 또는 k>RN이면 만들 수 없다.
- 이면 가 중 하나일 때에만 만들 수 있다.
작은 N에는 이 분류를 그대로 적용하지 않으며, 앞의 정확한 DP로 판정한다.
N≤12의 고정된 전처리 이후, 한 테스트 케이스의 시간 복잡도는 O(logN)이고 추가 공간 복잡도는 O(1)이다. 범위 판정 부분점수만 목표로 한다면 두 극값을 구한 뒤 인지 비교하면 된다.
정당성 증명
최대 깊이가 h인 가계도에는 깊이 0,1,…,h인 정점이 모두 존재한다. 따라서 다음 정점의 깊이는 정확히 1,…,h+1 중에서 고를 수 있다. 이것으로 작은 의 DP 전이가 정당화된다. 새 정점이 당시 최대 깊이보다 한 칸 깊을 때 그 정점을 이라고 부르자. 또한
Solution written by GPT6
i=1
∑
N
i
(
d2i−1
−
d2i)
h
max(h,d) 62N3+3tN2+3tN−2N−5t3−6t2−t
,
BN
(
t
)
=
FN(t)+
t(t+
1).
max
BN
(
t
)
,
RN
=
0≤t≤NmaxFN(t)
RN−k<p+1
FN(p−1),FN(p),FN(p+1) k−LN<q+1이면 −k가 BN(q−1),BN(q),BN(q+ 중 하나일 때에만 만들 수 있다. 나머지 구간의 모든 정수는 만들 수 있다.L
N
≤
k≤
RN
N
기록 정점
S(x)=2x(x+1),Q=i=1∑Ni(i−1) 기록 집합별 상한. 양의 방향을 먼저 보자. 음의 기운을 가진 기록 정점의 인덱스 집합을 R={b1<⋯<bt}로 고정한다. 기록이 아닌 음의 정점은 깊이 1, 기록이 아닌 양의 정점은 당시 최대 깊이에 두는 것이 최적이다. 이 상태에서 양의 정점 i를 기록으로 바꾸는 이득은
i1i∈/R+j>i,j∈/R∑j≥0 이다. i∈R이면 같은 쌍의 음의 기록 정점도 한 칸 깊어져 자기 항 i가 상쇄된다. 따라서 모든 양의 정점이 기록인 최적 구성이 존재한다. 그 값은
Q+r=1∑tfr(br),fr(x)=S(N)−23x2+(2r−1)x 이다. br≥r이고 fr(x)−fr(x+1)=3x+r+1>0이므로, 이 값은 R={1,…,t}에서의 FN(t) 이하이다. 초기 구간이 아닌 집합이면 bt≥t+1이므로 FN(t)보다 적어도 4t+1 작다.
초기 구간이고 t<N일 때, 양의 정점의 기록을 하나라도 생략하면 손실은 적어도 t+1이다. i>t이면 자기 항 i≥t+1이 남고, i≤t이면 위 합에 j=N∈/R이 포함되기 때문이다. 기록이 아닌 음의 정점의 깊이를 1보다 늘리는 손실도 그 인덱스가 t보다 크므로 적어도 t+1이다. 따라서 이 기록 집합에서 최댓값과 다른 값은 모두 FN(t)−t−1 이하이다.
음의 방향은 전체 값의 부호를 바꾸어 분석한다. 이번에는 원래 양의 정점 중 기록인 집합을 고정한다. 기록이 아닌 양의 정점은 깊이 1로 두고, 모든 음의 정점이 기록인 구성이 최적이다. 음의 정점 i를 기록으로 바꾸는 이득은 i+∑j>i,j∈/Rj>0이고, 최댓값은
Q+r=1∑tgr(br),gr(x)=S(N)−23x2+(2r−5)x 이다. gr(x)−gr(x+1)=3x+r−1>0이므로 초기 구간에서 BN(t)를 얻고, 초기 구간이 아니면 적어도 4t−1의 손실이 생긴다. 초기 구간이며 t<N일 때, 기록을 생략하거나 비기록 정점의 깊이를 최적값에서 바꾸는 손실은 적어도 t+1이다. 첫 양의 정점은 반드시 기록이지만 BN(1)>BN(0)이므로 극값 계산에는 t=0도 포함해도 된다. 이것으로 두 극값 공식이 증명된다.
두 가지 직접 구성. 처음 t쌍의 깊이를 2i−1,2i로 정한다. 이후 i>t에 대해 양의 정점의 깊이를 i+t로 고정하고 음의 정점의 깊이를 1+bi로 정하면
FN(t)−i=t+1∑Nibi,0≤bi≤i+t−1 를 만든다. 반대로 음의 정점의 깊이를 i+t, 양의 정점의 깊이를 1+bi로 정하면
−BN(t)+i=t+1∑Nibi 를 만든다. 후자에서 양의 정점이 먼저 깊이 i+t에 도달하더라도, 음의 정점은 이미 존재하는 깊이 i+t−1의 정점을 부모로 골라 같은 깊이에 둘 수 있다. 따라서 모든 bi 선택이 유효하다.
동전 합의 구간. t≥1, N≥2t+1이라 하자. 값 i인 동전을 i+t−1개씩 가지며, a=t+1, 전체 동전 수를 C, 전체 합을 W라고 하자. 이 동전들의 부분집합 합은 정확히
{0} ∪ [a,W−a] ∪ {W} 이다. 정확히 q개를 고른 합은 가장 작은 q개의 합 Aq부터 가장 큰 q개의 합 Zq까지의 모든 정수를 채운다. 정렬된 동전에서 선택한 인덱스를 한 칸씩 옮겨 가장 작은 선택을 가장 큰 선택으로 바꿀 수 있고, 인접한 동전 값의 차이가 0 또는 1이기 때문이다.
q=1,…,C−2에서 이웃한 두 구간이 이어짐을 보이면 된다. Zq=W−AC−q이므로 그 사이의 차이는
Dq=Aq+1−Zq=Aq+1+AC−q−W 이다. 정렬된 동전을 c1≤⋯≤cC라 하면 Dq+1−Dq=cq+2−이므로 Dq는 가운데까지 감소하고 이후 증가한다. 최댓값은 양 끝에서 나오며, 최소 동전 a가 적어도 두 개 있으므로 그 값은 2a−N≤1이다. 따라서 q=1,…,C−1의 구간은 [a,W−a] 전체를 채운다. 나머지 두 합은 아무것도 고르지 않거나 모두 고르면 되고, 최소 동전이 a이므로 다른 바깥 합은 불가능하다.
ΔFt=FN(t+1)−FN(t)=2N(N+1)−(t+1)(5t+4), ΔBt=BN(t+1)−BN(t)=2N(N+1)−5t(t+1) 이고 감소한다. N≥13이면 첫 최대 인덱스 p,q는 p,q≥2 및 N≥2p+1,2q+1을 만족한다. 실제로 N=2s에서 ΔBs−1=s(7−s)/2≤0이고, N=2s+1에서 ΔBs=−(s−2)(s+1)/2≤0이다. 또한 ΔFt<ΔBt이다.
첫 구성에서 t=p에 동전 보조정리를 적용하면
[−S(p)+p+1, RN−p−1] 을 채운다. 왼쪽 끝은 1 이하이므로 양의 내부 구간이 모두 가능하다. 둘째 구성의 t=q는
[LN+q+1, −S(q)−q−1] 을 채운다. 한편 모든 양의 정점을 깊이 1에 두고 음의 정점을 각각 깊이 1 또는 2에 두면 [−S(N),0]의 모든 정수를 만든다. 두 구간은 서로 겹치므로 음의 내부 구간도 모두 가능하다. 따라서
[LN+q+1, RN−p−1] 양 끝에서 남는 세 후보. 위쪽 경계 [RN−p,RN]를 보자. 인접 차분의 차이는 ΔFt−ΔFt−1=−(5t+2)이다. p가 첫 최대 인덱스이므로 ΔFp−1>0, ΔFp≤0이고, 따라서
FN(p)−FN(p−2)>5(p−1)+2>p, FN(p)−FN(p+2)≥5(p+1)+2>p. 기록 정점 수 t가 p−1,p,p+1 밖에 있으면 그 기록 수의 상한부터 경계 밖이다. 이 세 경우에도 초기 구간이 아닌 기록 집합은 적어도 4t+1>p를 잃어 경계에 들어오지 못한다. 초기 구간의 다른 구성은 t+1 이상을 잃는다. t=p−1이면 FN(t)<RN이므로 남은 손실 여유는 p−1=t 이하이고, 나머지 두 경우에도 여유는 t 이하이다. 따라서 경계에서 가능한 값은 세 최적값 FN(p−1),FN(p),F뿐이며, 앞의 직접 구성으로 실제로 만들 수 있다.
아래쪽도 ΔBt−ΔBt−1=−5t와 p 대신 q를 써서 같다. 이때 두 칸 떨어진 값의 손해는 각각 5(q−1)보다 크거나 5(q+1) 이상이며, 모두 q보다 크다. 초기 구간이 아닌 집합의 손해도 4t−1>q이므로, 경계에서 가능한 값은 −BN(q−1),−BN(q뿐이다. 이것으로 N≥13의 판정 분류가 완전히 증명된다.
1)
cC−q
N
(
p
+
1)
)
,
−
BN
(
q
+
1)