Skip to content

Conversation

@oncsr
Copy link
Contributor

@oncsr oncsr commented Mar 10, 2025

🧷 문제 링크

https://www.acmicpc.net/problem/30806

🧭 풀이 시간

80분

👀 체감 난이도

✏️ 문제 설명

N개의 집합 $S_1, S_2, \cdots, S_N$이 주어진다.
이 집합들 중 $k$개를 골라, 고른 집합들의 교집합을 생각해보자. $a_k$는 집합을 고르는 가능한 모든 선택 방법에 대해 교집합의 크기를 더한 값이다.

모든 $k = 1, 2, \cdots, N$에 대해, $a_k$$998,244,353 (=119 \times 2^{23} +1)$로 나눈 나머지를 구해보자.
$(998,244,353)$은 소수이다.

🔍 풀이 방법

[사용한 알고리즘]

  • 조합론

각 원소 $i$가 등장한 횟수를 $cnt[i]$라고 하면, 각 $k$에 대해 $a_k$$C(cnt[i], k)$만큼 더해지는 것을 알 수 있다.

모든 원소에 대해 저 값을 구해서 $a_k$를 관리하면 된다.

구하는 데 걸리는 시간 복잡도는 원소의 등장 횟수에 비례하는데, 결국 $O(\sum(|S|))$정도이기 때문이다.

⏳ 회고

식은 10분만에 도출했는데 시간복잡도가 당연히 $O(N^2)$일 거라 생각하고 고민만 하다가 끝났다.
풀이를 보고 생각해보니, 각 원소가 등장한 횟수에 포커스를 맞췄으면 금방 해결했을 것 같은데 아쉽다.
더 집중해야 할 듯

@oncsr oncsr added fail 😢 해설을 보고 풀었거나, 못 풀었을 때 timeout ⌚ 목표 시간보다 오래걸렸을 때 labels Mar 10, 2025
@ShinHeeEul ShinHeeEul merged commit 8d7f3ba into main Mar 10, 2025
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

fail 😢 해설을 보고 풀었거나, 못 풀었을 때 timeout ⌚ 목표 시간보다 오래걸렸을 때

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants