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

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

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

SON OF SUN

返回题目

题解

aia_iai​의 깊이를 did_idi​라고 하자. 한 사람의 기운은 자신과 모든 조상의 가문 합에 한 번씩 포함된다. 모든 기운의 합이 000이므로 구하려는 전체 합은

∑i=02Ns(i)=∑i=1Ni(d2i−1−d2i)\sum_{i=0}^{2N}s(i)=\sum_{i=1}^{N}i(d_{2i-1}-d_{2i})i=0∑2N​s(i)=

이다.

작은 NNN의 정확한 판정. a1,…,aja_1,\ldots,a_ja1​,…,aj​를 처리했을 때, 현재 최대 깊이가 hh이고 가중 깊이 합이 인 상태의 도달 가능성을 저장한다. 다음 정점의 깊이는 이상 이하에서 자유롭게 고를 수 있다. 깊이를 로 고르면 최대 깊이는 가 되고, 합에는 다음 정점의 기운과 의 곱을 더한다. 인 모든 경우를 미리 계산한다.

최솟값과 최댓값. 다음 함수를 정의한다.

FN(t)=2N3+3tN2+3tN−2N−5t3−6t2−t6,BN(t)=FN(t)+t(t+1).F_N(t)=\frac{2N^3+3tN^2+3tN-2N-5t^3-6t^2-t}{6},\qquad B_N(t)=F_N(t)+t(t+1).FN​(t)=

가능한 전체 합의 최솟값 LNL_NLN​과 최댓값 RNR_NRN​은

LN=−max⁡0≤t≤NBN(t),RN=max⁡0≤t≤NFN(t)L_N=-\max_{0\leq t\leq N} B_N(t),\qquad R_N=\max_{0\leq t\leq N} F_N(t)LN​=−0≤t≤N

이다. FNF_NFN​과 BNB_NBN​은 정수 구간에서 오목하다. 인접한 두 값의 대소를 비교하는 이분 탐색으로 각 최댓값을 구할 수 있다. 최댓값을 만드는 가장 작은 인덱스를 각각 p,qp,qp,q라고 하자. 동률이면 반드시 가장 작은 인덱스를 선택한다.

큰 NNN의 정확한 판정. N≥13N\geq13N≥13에서는 다음 도달 가능성 분류를 사용한다.

  • k<LNk<L_Nk<LN​ 또는 k>RNk>R_Nk>RN​이면 만들 수 없다.
  • 이면 가 중 하나일 때에만 만들 수 있다.

작은 NNN에는 이 분류를 그대로 적용하지 않으며, 앞의 정확한 DP로 판정한다.

N≤12N\leq12N≤12의 고정된 전처리 이후, 한 테스트 케이스의 시간 복잡도는 O(log⁡N)O(\log N)O(logN)이고 추가 공간 복잡도는 O(1)O(1)O(1)이다. 범위 판정 부분점수만 목표로 한다면 두 극값을 구한 뒤 LN≤k≤RNL_N\leq k\leq R_N인지 비교하면 된다.

정당성 증명

최대 깊이가 hhh인 가계도에는 깊이 0,1,…,h0,1,\ldots,h0,1,…,h인 정점이 모두 존재한다. 따라서 다음 정점의 깊이는 정확히 1,…,h+11,\ldots,h+11,…,h+1 중에서 고를 수 있다. 이것으로 작은 의 DP 전이가 정당화된다. 새 정점이 당시 최대 깊이보다 한 칸 깊을 때 그 정점을 이라고 부르자. 또한

Solution written by GPT6

i=1
∑
N
​
i
(
d2i−1​
−
d2i​)
h
xxx
111
h+1h+1h+1
ddd
max⁡(h,d)\max(h,d)max(h,d)
ddd
N≤12N\leq12N≤12
62N3+3tN2+3tN−2N−5t3−6t2−t​
,
BN​
(
t
)
=
FN​(t)+
t(t+
1).
max
​
BN​
(
t
)
,
RN​
=
0≤t≤Nmax​FN​(t)
RN−k<p+1R_N-k<p+1
RN​−k<p+1
kkk
FN(p−1),FN(p),FN(p+1)F_N(p-1),F_N(p),F_N(p+1)FN​(p−1),FN​(p),FN​(p+1)
  • k−LN<q+1k-L_N<q+1k−LN​<q+1이면 −k-k−k가 BN(q−1),BN(q),BN(q+1)B_N(q-1),B_N(q),B_N(q+1)BN​(q−1),BN​(q),BN​(q+ 중 하나일 때에만 만들 수 있다.
  • 나머지 구간의 모든 정수는 만들 수 있다.
  • L
    N​
    ≤
    k≤
    RN​
    NN
    N
    기록 정점
    S(x)=x(x+1)2,Q=∑i=1Ni(i−1)S(x)=\frac{x(x+1)}2,\qquad Q=\sum_{i=1}^{N}i(i-1)S(x)=2x(x+1)​,Q=i=1∑N​i(i−1)

    로 둔다.

    기록 집합별 상한. 양의 방향을 먼저 보자. 음의 기운을 가진 기록 정점의 인덱스 집합을 R={b1<⋯<bt}\mathcal R=\{b_1<\cdots<b_t\}R={b1​<⋯<bt​}로 고정한다. 기록이 아닌 음의 정점은 깊이 111, 기록이 아닌 양의 정점은 당시 최대 깊이에 두는 것이 최적이다. 이 상태에서 양의 정점 iii를 기록으로 바꾸는 이득은

    i 1i∉R+∑j>i, j∉Rj≥0i\,\mathbf{1}_{i\notin\mathcal R}+\sum_{j>i,\,j\notin\mathcal R}j\geq0i1i∈/R​+j>i,j∈/R∑​j≥0

    이다. i∈Ri\in\mathcal Ri∈R이면 같은 쌍의 음의 기록 정점도 한 칸 깊어져 자기 항 iii가 상쇄된다. 따라서 모든 양의 정점이 기록인 최적 구성이 존재한다. 그 값은

    Q+∑r=1tfr(br),fr(x)=S(N)−3x2+(2r−1)x2Q+\sum_{r=1}^{t}f_r(b_r),\qquad f_r(x)=S(N)-\frac{3x^2+(2r-1)x}{2}Q+r=1∑t​fr​(br​),fr​(x)=S(N)−23x2+(2r−1)x​

    이다. br≥rb_r\geq rbr​≥r이고 fr(x)−fr(x+1)=3x+r+1>0f_r(x)-f_r(x+1)=3x+r+1>0fr​(x)−fr​(x+1)=3x+r+1>0이므로, 이 값은 R={1,…,t}\mathcal R=\{1,\ldots,t\}R={1,…,t}에서의 FN(t)F_N(t)FN​(t) 이하이다. 초기 구간이 아닌 집합이면 bt≥t+1b_t\geq t+1bt​≥t+1이므로 FN(t)F_N(t)FN​(t)보다 적어도 4t+14t+14t+1 작다.

    초기 구간이고 t<Nt<Nt<N일 때, 양의 정점의 기록을 하나라도 생략하면 손실은 적어도 t+1t+1t+1이다. i>ti>ti>t이면 자기 항 i≥t+1i\geq t+1i≥t+1이 남고, i≤ti\leq ti≤t이면 위 합에 j=N∉Rj=N\notin\mathcal Rj=N∈/R이 포함되기 때문이다. 기록이 아닌 음의 정점의 깊이를 111보다 늘리는 손실도 그 인덱스가 ttt보다 크므로 적어도 t+1t+1t+1이다. 따라서 이 기록 집합에서 최댓값과 다른 값은 모두 FN(t)−t−1F_N(t)-t-1FN​(t)−t−1 이하이다.

    음의 방향은 전체 값의 부호를 바꾸어 분석한다. 이번에는 원래 양의 정점 중 기록인 집합을 고정한다. 기록이 아닌 양의 정점은 깊이 111로 두고, 모든 음의 정점이 기록인 구성이 최적이다. 음의 정점 iii를 기록으로 바꾸는 이득은 i+∑j>i, j∉Rj>0i+\sum_{j>i,\,j\notin\mathcal R}j>0i+∑j>i,j∈/R​j>0이고, 최댓값은

    Q+∑r=1tgr(br),gr(x)=S(N)−3x2+(2r−5)x2Q+\sum_{r=1}^{t}g_r(b_r),\qquad g_r(x)=S(N)-\frac{3x^2+(2r-5)x}{2}Q+r=1∑t​gr​(br​),gr​(x)=S(N)−23x2+(2r−5)x​

    이다. gr(x)−gr(x+1)=3x+r−1>0g_r(x)-g_r(x+1)=3x+r-1>0gr​(x)−gr​(x+1)=3x+r−1>0이므로 초기 구간에서 BN(t)B_N(t)BN​(t)를 얻고, 초기 구간이 아니면 적어도 4t−14t-14t−1의 손실이 생긴다. 초기 구간이며 t<Nt<Nt<N일 때, 기록을 생략하거나 비기록 정점의 깊이를 최적값에서 바꾸는 손실은 적어도 t+1t+1t+1이다. 첫 양의 정점은 반드시 기록이지만 BN(1)>BN(0)B_N(1)>B_N(0)BN​(1)>BN​(0)이므로 극값 계산에는 t=0t=0t=0도 포함해도 된다. 이것으로 두 극값 공식이 증명된다.

    두 가지 직접 구성. 처음 ttt쌍의 깊이를 2i−1,2i2i-1,2i2i−1,2i로 정한다. 이후 i>ti>ti>t에 대해 양의 정점의 깊이를 i+ti+ti+t로 고정하고 음의 정점의 깊이를 1+bi1+b_i1+bi​로 정하면

    FN(t)−∑i=t+1Nibi,0≤bi≤i+t−1F_N(t)-\sum_{i=t+1}^{N}i b_i,\qquad 0\leq b_i\leq i+t-1FN​(t)−i=t+1∑N​ibi​,0≤bi​≤i+t−1

    를 만든다. 반대로 음의 정점의 깊이를 i+ti+ti+t, 양의 정점의 깊이를 1+bi1+b_i1+bi​로 정하면

    −BN(t)+∑i=t+1Nibi-B_N(t)+\sum_{i=t+1}^{N}i b_i−BN​(t)+i=t+1∑N​ibi​

    를 만든다. 후자에서 양의 정점이 먼저 깊이 i+ti+ti+t에 도달하더라도, 음의 정점은 이미 존재하는 깊이 i+t−1i+t-1i+t−1의 정점을 부모로 골라 같은 깊이에 둘 수 있다. 따라서 모든 bib_ibi​ 선택이 유효하다.

    동전 합의 구간. t≥1t\geq1t≥1, N≥2t+1N\geq2t+1N≥2t+1이라 하자. 값 iii인 동전을 i+t−1i+t-1i+t−1개씩 가지며, a=t+1a=t+1a=t+1, 전체 동전 수를 CCC, 전체 합을 WWW라고 하자. 이 동전들의 부분집합 합은 정확히

    {0} ∪ [a,W−a] ∪ {W}\{0\}\ \cup\ [a,W-a]\ \cup\ \{W\}{0} ∪ [a,W−a] ∪ {W}

    이다. 정확히 qqq개를 고른 합은 가장 작은 qqq개의 합 AqA_qAq​부터 가장 큰 qqq개의 합 ZqZ_qZq​까지의 모든 정수를 채운다. 정렬된 동전에서 선택한 인덱스를 한 칸씩 옮겨 가장 작은 선택을 가장 큰 선택으로 바꿀 수 있고, 인접한 동전 값의 차이가 000 또는 111이기 때문이다.

    q=1,…,C−2q=1,\ldots,C-2q=1,…,C−2에서 이웃한 두 구간이 이어짐을 보이면 된다. Zq=W−AC−qZ_q=W-A_{C-q}Zq​=W−AC−q​이므로 그 사이의 차이는

    Dq=Aq+1−Zq=Aq+1+AC−q−WD_q=A_{q+1}-Z_q=A_{q+1}+A_{C-q}-WDq​=Aq+1​−Zq​=Aq+1​+AC−q​−W

    이다. 정렬된 동전을 c1≤⋯≤cCc_1\leq\cdots\leq c_Cc1​≤⋯≤cC​라 하면 Dq+1−Dq=cq+2−cC−qD_{q+1}-D_q=c_{q+2}-c_{C-q}Dq+1​−Dq​=cq+2​−이므로 DqD_qDq​는 가운데까지 감소하고 이후 증가한다. 최댓값은 양 끝에서 나오며, 최소 동전 aaa가 적어도 두 개 있으므로 그 값은 2a−N≤12a-N\leq12a−N≤1이다. 따라서 q=1,…,C−1q=1,\ldots,C-1q=1,…,C−1의 구간은 [a,W−a][a,W-a][a,W−a] 전체를 채운다. 나머지 두 합은 아무것도 고르지 않거나 모두 고르면 되고, 최소 동전이 aaa이므로 다른 바깥 합은 불가능하다.

    큰 NNN에서 내부 구간의 완전성. 차분은

    ΔFt=FN(t+1)−FN(t)=N(N+1)−(t+1)(5t+4)2,\Delta F_t=F_N(t+1)-F_N(t)=\frac{N(N+1)-(t+1)(5t+4)}2,ΔFt​=FN​(t+1)−FN​(t)=2N(N+1)−(t+1)(5t+4)​,
    ΔBt=BN(t+1)−BN(t)=N(N+1)−5t(t+1)2\Delta B_t=B_N(t+1)-B_N(t)=\frac{N(N+1)-5t(t+1)}2ΔBt​=BN​(t+1)−BN​(t)=2N(N+1)−5t(t+1)​

    이고 감소한다. N≥13N\geq13N≥13이면 첫 최대 인덱스 p,qp,qp,q는 p,q≥2p,q\geq2p,q≥2 및 N≥2p+1,2q+1N\geq2p+1,2q+1N≥2p+1,2q+1을 만족한다. 실제로 N=2sN=2sN=2s에서 ΔBs−1=s(7−s)/2≤0\Delta B_{s-1}=s(7-s)/2\leq0ΔBs−1​=s(7−s)/2≤0이고, N=2s+1N=2s+1N=2s+1에서 ΔBs=−(s−2)(s+1)/2≤0\Delta B_s=-(s-2)(s+1)/2\leq0ΔBs​=−(s−2)(s+1)/2≤0이다. 또한 ΔFt<ΔBt\Delta F_t<\Delta B_tΔFt​<ΔBt​이다.

    첫 구성에서 t=pt=pt=p에 동전 보조정리를 적용하면

    [−S(p)+p+1, RN−p−1][-S(p)+p+1,\ R_N-p-1][−S(p)+p+1, RN​−p−1]

    을 채운다. 왼쪽 끝은 111 이하이므로 양의 내부 구간이 모두 가능하다. 둘째 구성의 t=qt=qt=q는

    [LN+q+1, −S(q)−q−1][L_N+q+1,\ -S(q)-q-1][LN​+q+1, −S(q)−q−1]

    을 채운다. 한편 모든 양의 정점을 깊이 111에 두고 음의 정점을 각각 깊이 111 또는 222에 두면 [−S(N),0][-S(N),0][−S(N),0]의 모든 정수를 만든다. 두 구간은 서로 겹치므로 음의 내부 구간도 모두 가능하다. 따라서

    [LN+q+1, RN−p−1][L_N+q+1,\ R_N-p-1][LN​+q+1, RN​−p−1]

    의 모든 정수가 가능하다.

    양 끝에서 남는 세 후보. 위쪽 경계 [RN−p,RN][R_N-p,R_N][RN​−p,RN​]를 보자. 인접 차분의 차이는 ΔFt−ΔFt−1=−(5t+2)\Delta F_t-\Delta F_{t-1}=-(5t+2)ΔFt​−ΔFt−1​=−(5t+2)이다. ppp가 첫 최대 인덱스이므로 ΔFp−1>0\Delta F_{p-1}>0ΔFp−1​>0, ΔFp≤0\Delta F_p\leq0ΔFp​≤0이고, 따라서

    FN(p)−FN(p−2)>5(p−1)+2>p,F_N(p)-F_N(p-2)>5(p-1)+2>p,FN​(p)−FN​(p−2)>5(p−1)+2>p,
    FN(p)−FN(p+2)≥5(p+1)+2>p.F_N(p)-F_N(p+2)\geq5(p+1)+2>p.FN​(p)−FN​(p+2)≥5(p+1)+2>p.

    기록 정점 수 ttt가 p−1,p,p+1p-1,p,p+1p−1,p,p+1 밖에 있으면 그 기록 수의 상한부터 경계 밖이다. 이 세 경우에도 초기 구간이 아닌 기록 집합은 적어도 4t+1>p4t+1>p4t+1>p를 잃어 경계에 들어오지 못한다. 초기 구간의 다른 구성은 t+1t+1t+1 이상을 잃는다. t=p−1t=p-1t=p−1이면 FN(t)<RNF_N(t)<R_NFN​(t)<RN​이므로 남은 손실 여유는 p−1=tp-1=tp−1=t 이하이고, 나머지 두 경우에도 여유는 ttt 이하이다. 따라서 경계에서 가능한 값은 세 최적값 FN(p−1),FN(p),FN(p+1)F_N(p-1),F_N(p),F_N(p+1)FN​(p−1),FN​(p),F뿐이며, 앞의 직접 구성으로 실제로 만들 수 있다.

    아래쪽도 ΔBt−ΔBt−1=−5t\Delta B_t-\Delta B_{t-1}=-5tΔBt​−ΔBt−1​=−5t와 ppp 대신 qqq를 써서 같다. 이때 두 칸 떨어진 값의 손해는 각각 5(q−1)5(q-1)5(q−1)보다 크거나 5(q+1)5(q+1)5(q+1) 이상이며, 모두 qqq보다 크다. 초기 구간이 아닌 집합의 손해도 4t−1>q4t-1>q4t−1>q이므로, 경계에서 가능한 값은 −BN(q−1),−BN(q),−BN(q+1)-B_N(q-1),-B_N(q),-B_N(q+1)−BN​(q−1),−BN​(q뿐이다. 이것으로 N≥13N\geq13N≥13의 판정 분류가 완전히 증명된다.

    1)
    cC−q​
    N​
    (
    p
    +
    1)
    )
    ,
    −
    BN​
    (
    q
    +
    1)