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

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

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

Shirogane는 노래하고 싶어

문제로 돌아가기

해설

전체 오차가 EEE 이하이므로 각 항도 ∣Ai−Bi∣≤E|A_i-B_i|\le E∣Ai​−Bi​∣≤E를 만족한다. 0≤Ai≤500\le A_i\le500≤Ai​≤50이고 Bi≥0B_i\ge0Bi​≥0이므로, 가능한 음정은 L=0L=0L=0부터 U=50+EU=50+EU=50+E까지이다. 이 범위의 정수 개수는 W=51+E≤101W=51+E\le101W=51+E≤101이다.

Di(e,x)D_i(e,x)Di​(e,x)를 첫 iii개 항을 정했을 때, 오차의 합이 정확히 eee이고 마지막 음정 BiB_iB가 인 수열의 개수라고 하자. , 인 상태를 저장한다.

첫 음정은 B1=0B_1=0B1​=0으로 고정되어 있으므로 첫 항의 오차는 A1A_1A1​이다. A1≤EA_1\le EA이면

D1(A1,0)=1D_1(A_1,0)=1D1​(A1​,0)=1

로 초기화하고, 나머지 상태는 000으로 둔다. A1>EA_1>EA1​>E이면 가능한 수열이 없으므로 바로 000을 출력할 수 있다.

이제 i≥2i\ge2i≥2이고 마지막 음정을 xxx로 정한다고 하자. 이번 항의 오차는 d=∣Ai−x∣d=|A_i-x|d=∣Ai​−x이므로, 앞의 개 항에서 사용한 오차는 여야 한다. 이전 음정 는 를 만족해야 하므로 일 때

Di(e,x)=∑y=max⁡(L,x−K)min⁡(U,x+K)Di−1(e−d,y)D_i(e,x)=\sum_{y=\max(L,x-K)}^{\min(U,x+K)}D_{i-1}(e-d,y)Di​(e,x)=

이다. e<de<de<d인 상태의 값은 000이다.

i=2,3,…,Ni=2,3,\ldots,Ni=2,3,…,N 순서로 각 오차 eee와 마지막 음정 xxx를 순회하고, 위 구간의 yyy를 직접 순회하여 더하면 된다. 모든 덧셈은 1로 나눈 나머지로 계산한다.

최종 답은

∑e=0E∑x=LUDN(e,x)\sum_{e=0}^{E}\sum_{x=L}^{U}D_N(e,x)e=0∑E​x=L∑U​

이다. 오차가 정확히 EEE인 상태만 세는 것이 아니라, EEE 이하인 모든 상태를 더해야 한다.

상태는 N(E+1)WN(E+1)WN(E+1)W개이고, 각 상태에서 이전 음정을 최대 2K+12K+12K+1개 확인한다. 따라서 시간 복잡도는

O(N⋅W⋅(E+1)⋅(2K+1))O\bigl(N\cdot W\cdot(E+1)\cdot(2K+1)\bigr)O(N⋅W⋅(E+1)⋅(2K+1))

이다. 이는 원소 개수 × 음정 범위 × 총 오차 범위 × 인접 음정 차이 범위에 해당한다. 주어진 제한에서는 이 전이를 직접 계산할 수 있다.

매 단계는 바로 이전 단계만 사용하므로 배열을 두 층만 저장하면 된다. 공간 복잡도는 O(W(E+1))O(W(E+1))O(W(E+1))이다. 음정 xxx는 배열의 인덱스 x−Lx-Lx−L에 대응시키면 된다.

증명

첫 항은 000으로 유일하게 정해지고 오차는 A1A_1A1​이다. 따라서 A1≤EA_1\le EA1​≤일 때 로 두는 초기화는 길이 인 유효한 수열을 정확히 한 번 센다. 이면 이후 항을 정해도 총 오차를 줄일 수 없으므로 답은 이다.

Solution written by GPT6

i​
xxx
0≤e≤E0\le e\le E0≤e≤E
L≤x≤UL\le x\le UL≤x≤U
1​
≤
E
∣
i−1i-1i−1
e−de-de−d
yyy
∣x−y∣≤K|x-y|\le K∣x−y∣≤K
e≥de\ge de≥d
y
=
max
(
L
,
x
−
K
)
∑
min(U,x+K)
​
Di−1​
(
e
−
d,y)
 000 000 0071\,000\,000\,007
1000000007
DN​
(
e
,
x
)
E
D1(A1,0)=1D_1(A_1,0)=1D1​(A1​,0)=1
111
A1>EA_1>EA1​>E
000

Di−1D_{i-1}Di−1​이 올바르다고 가정하자. 마지막 음정이 xxx이고 총 오차가 eee인 유효한 수열에서 마지막 항을 지우면, 오차가 e−∣Ai−x∣e-|A_i-x|e−∣Ai​−x∣이고 마지막 음정 yyy가 ∣x−y∣≤K|x-y|\le K∣x−y∣≤K를 만족하는 이전 수열이 남는다.

반대로 이러한 이전 수열에 xxx를 붙이면 인접 음정 차이 조건을 만족하며 총 오차는 정확히 eee가 된다. 두 과정은 서로 반대이므로 전이는 유효한 수열을 빠짐없이, 중복 없이 센다. 마지막에 e≤Ee\le Ee≤E인 상태를 모두 더하면 원하는 답을 얻는다.