Skip to content

Conversation

@oncsr
Copy link
Contributor

@oncsr oncsr commented Dec 19, 2025

🧷 문제 링크

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

🧭 풀이 시간

20분

👀 체감 난이도

✏️ 문제 설명

문제 N개가 출제된 순서대로 주어진다. 각 문제는 길이 K인 이진수 형태이다.
문제 A가 문제 B보다 먼저 출제되었고, A에서 사용하는 알고리즘이 B에서 사용하는 알고리즘을 모두 포함한다면 B를 웰논이라고 하고, 그렇지 않으면 애드혹이라 정의한다.

문제 A의 직전 문제가 웰논이었다면,
문제 A의 이진수에서 i번째 비트가 1인 경우에 i번 알고리즘을 사용한다는 의미이다.
직전 문제가 애드혹이었다면,
문제 A의 이진수에서 i번째 비트가 1인 경우에 (K-j+1)번 알고리즘을 사용한다는 의미이다.

🔍 풀이 방법

exist[a] = 이진수 a가 웰논이면 true, 아니면 false라는 boolean 배열을 관리한다.
문제가 주어질 때마다 exist를 갱신해 나간다. 어떤 이진수 a가 주어지면, a & b = b를 만족하는 모든 b들은 이후에 웰논이 된다.

갱신 한 번에는 최대 O(KlogK)이지만, 갱신 과정을 활성 비트를 하나씩 끄는 방식의 재귀 함수로 짜면 갱신 N번에도 amortized O(KlogK)이다.
-> 결국 그냥 Bitmask DP 기본 형태가 된다.

⏳ 회고

@oncsr oncsr self-assigned this Dec 19, 2025
@oncsr oncsr added the success 👍 해설을 보지 않고 풀었을 때 label Dec 19, 2025
@ShinHeeEul ShinHeeEul merged commit 71ce4be into main Dec 19, 2025
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

success 👍 해설을 보지 않고 풀었을 때

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants