티스토리 뷰
https://www.acmicpc.net/problem/2109
2109번: 순회강연
한 저명한 학자에게 n(0 ≤ n ≤ 10,000)개의 대학에서 강연 요청을 해 왔다. 각 대학에서는 d(1 ≤ d ≤ 10,000)일 안에 와서 강연을 해 주면 p(1 ≤ p ≤ 10,000)만큼의 강연료를 지불하겠다고 알려왔다.
www.acmicpc.net
얼핏 생각하면 n이 최대 1만이기 때문에 그냥 d값이 작은 강연 즉 우선 처리해야 하는 강연 중 강연료가 높은 강연을 선택해 나가면 되지 않나 싶지만, 그렇게 하면 같은 일에 강연료가 높은 여러 강연들이 모여 있는 경우 처리가 안된다.
1. min heap 우선순위 큐를 만들어서 선택한 강연들의 강연료를 넣어줄 것이다.
2. 같은 날들에 하는 강연들끼리 강연료를 내림차순으로 정렬해 저장한다.
3. 그리고 각 날들별로 강연을 선택하는데 pq.size가 곧 내가 강연한 강연들의 갯수이므로 만약 pq.size가 현재 날 보다 작다면 무조건 넣어주면 되고, 그렇지 않다면 pq.top에 가장 강연료가 낮은 강연이 있으므로 pop해주고 넣어주면 된다.
최종적으로 pq에는 내가 강연한 강연들의 강연료가 담겨 있으므로 모두 더해주면 답이다.
'PS' 카테고리의 다른 글
백준 21317. 징검다리 건너기 (0) | 2023.01.26 |
---|---|
백준 7453. 합이 0인 네 정수 (0) | 2023.01.26 |
백준 14225. 부분수열의 합 (0) | 2023.01.22 |
백준 2042. 구간 합 구하기 (0) | 2023.01.22 |
백준 1202. 보석 도둑 (0) | 2023.01.21 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- floyd warshall
- back tracking
- dfs
- DP
- 자료구조
- Tree
- CSS
- Brute Force
- 조합
- priority queue
- Unity
- two pointer
- permutation
- Python
- Stack
- Kruskal
- 이분탐색
- greedy
- BFS
- Implementation
- db
- Dijkstra
- MVC
- C++
- 재귀
- graph
- Spring
- C
- recursion
- binary search
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
글 보관함