白駿7662.にじゅうゆうせんれつ
12572 ワード
言語:python 3.9.1
❓ Problem
白駿7662。にじゅうゆうせんれつ
📕 フィードバック
1.発展方向
問題を読みながら反例できる部分をよく記録しなければならない.
2.感じる
メモリが過剰であるため、ある変数に予め格納して続行するよりも、for文を行いながら入力を分散します.
🚩 Solution
1.方法
TRY 1
識別子を使用せずにinfoをdict型:
TRY 2
従って、アプリケーションの反例は
TRY 3
このように反例を解決しても、メモリが過剰になります.
まず、削除コマンドを受信すると、その都度1つの値
: 10%? メモリタイムアウト
それでもメモリオーバーが続いていたので、IかDについての命令→
:メモリ超過解決!
2.コード
じかんふくごうどぶんせき
O(b*loga)、b=挿入コマンドカウント、a=削除コマンドカウント
❓ Problem
白駿7662。にじゅうゆうせんれつ
📕 フィードバック
1.発展方向
問題を読みながら反例できる部分をよく記録しなければならない.
2.感じる
メモリが過剰であるため、ある変数に予め格納して続行するよりも、for文を行いながら入力を分散します.
🚩 Solution
1.方法
TRY 1
識別子を使用せずにinfoをdict型:
key=큐의정수
、val=0 if (삭제된 적 있는 경우) else 1
として表し、本明細書では、同じ整数が異なるデータで挿入/削除される可能性があることを示している.TRY 2
従って、アプリケーションの反例は
info
をリストとし、長さをkとし、メモリの浪費を最大限に回避する.この場合、info
においてkey=識別子、すなわち整数が同一であっても、異なるコマンドで入力(I 32,I 32)すれば、info
に相互に識別可能な識別子として挿入することができる.このとき、識別子は、for文のiとして「これまでに実行されたコマンド数」に設定される.TRY 3
このように反例を解決しても、メモリが過剰になります.
まず、削除コマンドを受信すると、その都度1つの値
x = heapq.heappop()
が保存され、heaqp.heappop()
として破棄される: 10%? メモリタイムアウト
それでもメモリオーバーが続いていたので、IかDについての命令→
commands = list(map())
分forゲートで受け取りました.:メモリ超過解決!
import sys, heapq
T = int(sys.stdin.readline()); ans = []
for _ in range(T):
k = int(sys.stdin.readline())
maxq = []; minq = []; info = [False]*k
for i in range(k):
# 명령마다 처리
c = sys.stdin.readline()[:-1].split()
if c[0] == 'I':
# * INSERT
heapq.heappush(maxq, (-1 * int(c[1]), i))
heapq.heappush(minq, (int(c[1]), i))
info[i] = True
else:
# * POP
if int(c[1]) == 1 and len(maxq) != 0:
# 최댓값 삭제
while(maxq and not info[maxq[0][1]]):
heapq.heappop(maxq)
if maxq: info[maxq[0][1]] = False; heapq.heappop(maxq)
elif int(c[1]) == -1 and len(minq) != 0:
# 최솟값 삭제
while(minq and not info[minq[0][1]]):
heapq.heappop(minq)
if minq: info[minq[0][1]] = False; heapq.heappop(minq)
# 마지막 max_val, min_val
while(minq and not info[minq[0][1]]): heapq.heappop(minq)
while(maxq and not info[maxq[0][1]]): heapq.heappop(maxq)
ans.append('%d %d'%(-1*maxq[0][0], minq[0][0]) if maxq and minq else "EMPTY")
for a in ans:
print(a)
3.結果じかんふくごうどぶんせき
O(b*loga)、b=挿入コマンドカウント、a=削除コマンドカウント
Reference
この問題について(白駿7662.にじゅうゆうせんれつ), 我々は、より多くの情報をここで見つけました https://velog.io/@tera_geniel/백준-7662.-이중-우선순위-큐テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol