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

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

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

OrBiTal (easy)

문제로 돌아가기

해설

입자 하나가 더하는 세기의 합은 K2K^2K2이다. 따라서 S=∑AiS=\sum A_iS=∑Ai​에 대해 K2∣SK^2\mid SK2∣S인 후보만 확인한다. 입자의 최고 세기는 KKK이므로 K≤max⁡AiK\leq\max A_iK≤maxAi​도 필요하다.

KKK를 고정하고 왼쪽부터 보자. 이미 시작한 삼각형을 제외하면 현재 칸에 남은 값만큼 현재 칸에서 시작하는 삼각형을 넣어야 한다. 왼쪽 끝 계수가 111이므로 횟수가 유일하게 정해진다. 음수 횟수가 필요하거나 길이 2K−12K-12K−1이 남지 않은 곳에서 새 삼각형이 필요하면 불가능하다.

이 처리를 빠르게 하려면 A0=A−1=0A_0=A_{-1}=0A0​=A−1​=0으로 두고 Ci=Ai−2Ai−1+Ai−2를 만든다. 를 번 칸에서 시작하는 삼각형의 개수라 하자. 범위 밖 는 으로 두면

Xi=Ci+2Xi−K−Xi−2KX_i=C_i+2X_{i-K}-X_{i-2K}Xi​=Ci​+2X

를 왼쪽부터 계산할 수 있다. 0≤Xi≤Ai0\leq X_i\leq A_i0≤Xi​≤Ai​인지, i>N−2K+2i>N-2K+2i>이면 인지 확인한다.

후보 수를 DDD라 하면 시간 복잡도는 O(ND+N)O(ND+N)O(ND+N), 공간 복잡도는 O(N)O(N)O(N)이다. 서브태스크 1에서는 K≤10K\leq10K≤인 모든 후보를 확인해 에 해결할 수 있다. 서브태스크 2에서는 합 조건으로 거르지 않고 모든 를 확인하는 풀이도 충분하다.

증명

왼쪽부터 처음으로 아직 맞추지 않은 칸을 iii라 하자. 뒤에서 시작하는 삼각형은 iii에 영향을 주지 않는다. 따라서 이미 시작한 삼각형의 기여를 제외한 잔여값은 iii에서 시작하는 삼각형으로만 채울 수 있다. 그 계수가 111이므로 횟수가 강제된다. 이 선택을 모든 칸에서 반복하면 가능한 해를 놓치지 않는다.

삼각형의 이차 차분은 시작점에 111, KKK칸 뒤에 , 칸 뒤에 이다. 따라서 위 점화식은 강제된 횟수를 정확히 계산한다. 모든 횟수가 비음수이고 허용된 시작 위치에만 존재하면 전체 삼각형이 선형 구간 안에 놓인다. 생성된 값과 목표값은 첫 두 경계값 및 이차 차분이 같으므로 모든 칸에서 일치한다.

Solution written by GPT6

C_i=A_i-2A_{i-1}+A_{i-2}
Ci​=Ai​−2Ai−1​+Ai−2​
XiX_iXi​
iii
XiX_iXi​
000
i−K
​
−
Xi−2K​
N−
2K+
2
Xi=0X_i=0Xi​=0
10
O(N)O(N)O(N)
KKK
O(N2)O(N^2)O(N2)
−2-2−2
2K2K2K
111