Skip to content

Conversation

@oncsr
Copy link
Contributor

@oncsr oncsr commented Mar 3, 2025

🧷 문제 링크

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

🧭 풀이 시간

35분

👀 체감 난이도

✏️ 문제 설명

  • N개의 발전소가 있고, 각 발전소 중 몇 개는 고장났다.
  • 고장나지 않은 발전소를 이용해서 고장난 발전소를 고칠 수 있다.
  • 발전소를 고치는 비용이 N*N 형태로 주어진다.
  • 최소 P개의 발전소가 고장나있지 않도록 고치는 최소 수리 비용을 구해보자.

🔍 풀이 방법

[사용한 알고리즘]

  • Bit DP

  • 고장난 발전소와 고장나지 않은 발전소의 조합으로 가능한 경우들을 비트마스킹으로 정수 하나만을 사용해서 나타낼 수 있다.
    ex)
    image
    => 1101101로 나타낼 수 있다.
  • 이 비트마스킹을 이용해서 2차원 DP배열을 떠올렸다.
  • $DP[n][k] =$ 비트마스킹 k인 상태에서, 마지막으로 고친 발전소의 번호가 n이었을 때의 최소 수리 비용
  • 마지막으로 고친 발전소가 n이니까, 그 이전 상태로 가능한 경우는 $DP[i][k \oplus 2^n]$이다. (단, $2^i | k = k$ 이어야 함)
  • top-down으로 돌려서, 각 상태 별로 고장나지 않은 발전소가 P개 이상인 경우에만 정답을 갱신해줬다.

⏳ 회고

  • 처음에 다 고장나있는 경우에서 P = 0일 때를 처리하지 못해 틀림.

@oncsr oncsr added the success 👍 해설을 보지 않고 풀었을 때 label Mar 3, 2025
@ShinHeeEul ShinHeeEul merged commit 3e25e7f into main Mar 3, 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