Skip to content

Conversation

@oncsr
Copy link
Contributor

@oncsr oncsr commented Mar 27, 2025

🧷 문제 링크

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

🧭 풀이 시간

80분

👀 체감 난이도

✏️ 문제 설명

초기에 정점이 N개, 간선은 없고 정점에 가중치가 달려있는 그래프가 주어진다.
i번 정점의 가중치는 A[i]이고, 이 값은 0 이상 M 미만이다.
이 그래프 상에서 i번 정점과 j번 정점을 잇는 간선을 추가할 때, 그 간선의 가중치는 A[i] + A[j]를 M으로 나눈 나머지가 된다.

이 그래프에 간선을 적절히 추가해서 연결 그래프로 만들고, 그 때의 최소 스패닝 트리 비용을 최소화해보자.

🔍 풀이 방법

[사용한 알고리즘]

  • 투 포인터

먼저, 정점 가중치 배열을 정렬시킨다.

투 포인터를 s = 1, e = N으로 세팅한다.

  • A[s] + A[e]가 M이상이 되도록 s값을 늘린다. (이 과정에서 매번 간선 (0,s+1)이 추가된다.)
  • 이제, 아래 작업을 반복하며 매번 간선 (s,e)를 추가한다.
    • A[s] + A[e-1]이 M이상이라면, e를 줄인다.
    • 그렇지 않다면, s를 늘린다.

위 과정은 초기에 주어지는 정점 가중치가 모두 M 미만이기 때문에 가능하다.

⏳ 회고

떠올리기 진짜 어려웠다

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