DOJ logoDOJ
Problems
Recently added problemsSaved problems
CategoriesDLCContestsGroupsTeamsBoard
Ranking
Solved Problem RankingStreak rankingDOJ Power ranking
Status
Call for TasksLoginRegister
DOJ logoDOJ

Community online judge with OI-style subtask scoring, Elo ratings, and Discord-backed certification.

Problems
ProblemsCategories
Community
ContestsRankingBoardNoticesHost an external contestGuide
Account
LoginRegisterJudge Status
Policy
Terms of ServiceDLC RulesPrivacyAPI documentationLanguage runtimesContest rank rewardsRating and performance
© 2026 DOJ
All rights reserved
Editorial

Crush

Back to problem

Editorial

이미 공개된 정보만으로 확정된 서로 좋아하는 쌍의 수를 fixed\mathrm{fixed}fixed라 하자. 아직 짝사랑 상대가 공개되지 않은 학생 수를 mmm이라 하자.

공개되지 않은 학생 uuu에 대해, 이미 공개된 학생 중 uuu를 좋아한다고 알려진 학생 수를 dud_udu​라 하자. uuu가 이들 중 한 명을 고르면 새로운 서로 좋아하는 쌍이 하나 생긴다. 또한 공개되지 않은 두 학생 u,vu,vu,v가 서로를 고르는 경우에도 새로운 서로 좋아하는 쌍이 하나 생긴다.

가능한 추가 이벤트는 다음 두 종류이다.

  • 공개되지 않은 학생 uuu가 자신을 좋아한다고 이미 공개된 학생 중 한 명을 고르는 경우. 이 이벤트의 가중치는 dud_udu​이고, 공개되지 않은 학생 하나를 사용한다.
  • 공개되지 않은 두 학생 u,vu,vu,v가 서로를 고르는 경우. 이 이벤트의 가중치는 111이고, 공개되지 않은 학생 둘을 사용한다.

정확히 kkk개의 이벤트를 직접 세는 대신, factorial moment를 먼저 구한 뒤 이항 반전을 적용한다. 한 학생의 가능한 선택 수는 R=N−1R=N-1R=N−1이다.

dud_udu​들의 elementary symmetric polynomial을

∏u(1+dux)=∑sesxs\prod_u(1+d_u x)=\sum_s e_s x^su∏​(1+du​x)=

라 하자. 이를 빠른 다항식 곱셈으로 구한다. 이후 문제는 사용한 단일 이벤트 수와 쌍 이벤트 수를 합쳐 세는 형태가 되며, 필요한 합은 Fibonacci형 변환

Zn=∑u=0n(nu)An+uZ_n=\sum_{u=0}^{n}\binom{n}{u}A_{n+u}Zn​=u=0∑n​

으로 정리된다. 이 변환은 t2=z(t+1)t^2=z(t+1)t2=z(t+1) 관계를 이용하여 분할정복과 NTT로 계산할 수 있다.

추가 이벤트 수에 대한 factorial moment를 gqg_qgq​라 하면, 정확히 kkk개의 추가 서로 좋아하는 쌍을 만드는 경우의 수 fkf_kfk​는 다음 이항 반전으로 얻는다.

fk=∑q≥k(−1)q−k(qk)gq.f_k=\sum_{q\geq k}(-1)^{q-k}\binom{q}{k}g_q.fk​=q≥k∑​(−1

마지막으로 이미 확정된 쌍의 수 fixed\mathrm{fixed}fixed만큼 답을 오른쪽으로 밀면 된다. 전체 시간복잡도는 각 테스트 케이스에 대해 O(mlog⁡2m)O(m\log^2 m)O(mlog2m) 수준이다.

Solution written by GPT5.5

s
∑
​
es​
xs
(
un​
)
An+u​
)
q−k
(kq​)
gq​
.