[백준] 17942. 알고리즘 공부

newbieski·2022년 3월 17일
0

백준

목록 보기
125/210

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

문제요약

  • 공부할 알고리즘들이 주어지고, 각각에 필요한 공부양이 주어짐 (10만개, 10^8)
  • 연관성이 주어짐 : A를 공부하면 B의 공부양이 D만큼 줄어듬. 줄어드는 양은 합산 가능
  • 공부를 했다고 공부양이 없어지지는 않음 => 100의 능력치를 가지고 계속 공부를 한다고 보면 됨
  • M개의 알고리즘을 공부하기 위해 최소로 필요한 공부양(능력치)

접근법 - 실패

  • 위상정렬 + 파라메트릭 서치로 하려고 했음
  • 위상 정렬 순서로 훑으면서 특정 값으로 되는지 안되는지로 판단
  • cycle이 생기는 것을 간과했음

접근법 - 성공

  • 가장 작은 알고리즘 공부양이 있을 것임
    • 작은 공부양이 혹시라도 더 줄어들 수 있지만, 더 줄어들기 위해서는 더 큰 공부양으로 진행을 해야할 것임
    • 가장 작은 알고리즘 공부양은 어짜피 필요한 최소 공부양임
  • 가장 작은 알고리즘 공부양을 진행하면 관련된 것들이 업데이트 될 것임
  • 그리고 나서 가장 작은 공부양이 있을 것이고
  • 이렇게 반복하다보면 언젠가 M개를 넘게 공부할 것임. 그리고 마지막으로 사용한 공부양(=능력치)이 있을 것임
  • 그리디(작은 공부양부터) + 우선순위큐(가장 작은 공부양)
  • 이미 공부한 알고리즘은 방문체크
profile
newbieski

0개의 댓글