사용자 도구

사이트 도구


ps:problems:boj:1781

컵라면

ps
링크acmicpc.net/…
출처BOJ
문제 번호1781
문제명컵라면
레벨골드 2
분류

그리디

시간복잡도O(nlogn)
인풋사이즈n<=200,000
사용한 언어Python
제출기록65840KB / 768ms
최고기록440ms
해결날짜2021/12/14

풀이

  • 과제와 동일한 문제. 다만 n이 커졌기 때문에, O(n^2)으로도 통과되는 과제과 달리 우선순위큐를 쓰는 O(nlogn) 솔루션으로만 통과된다.
  • 풀이는 과제 참고.

코드

"""Solution code for "BOJ 1781. 컵라면".

- Problem link: https://www.acmicpc.net/problem/1781
- Solution link: http://www.teferi.net/ps/problems/boj/1781


Tags: [Greedy] [Priority queue]
"""

import heapq
import sys


def main():
    N = int(sys.stdin.readline())
    problems = []
    for _ in range(N):
        problem = [int(x) for x in sys.stdin.readline().split()]
        problems.append(problem)

    problems.sort()
    heap = []
    answer = 0
    max_deadline = problems[-1][0]
    for deadline in range(max_deadline, 0, -1):
        while problems and problems[-1][0] >= deadline:
            heapq.heappush(heap, -problems.pop()[1])
        if heap:
            answer += -heapq.heappop(heap)

    print(answer)


if __name__ == '__main__':
    main()

토론

댓글을 입력하세요:
A F​ S M K
 
ps/problems/boj/1781.txt · 마지막으로 수정됨: 2022/04/13 15:26 저자 teferi