ABC294-DのTLEの解消
AtcoderのABC294のD問題 (https://atcoder.jp/contests/abc294/tasks/abc294_d) に以下のコードを提出したのですが、どうしてもTLEになります
問題の説明は実際の問題を見たほうがわかりやすいので省きます
プログラムの説明
l1
で呼ばれたけど行っていない人、l0
で呼ばれてない人を管理しています
入力の1文字目が1の時はl0
の最小値をheappop
してl1
に加えます
1文字目が3の時はl1
の最小値を出力します
1文字目が2の時はそれに続く数字をl1
からremove
します
python
1import heapq 2n,q=map(int,input().split()) 3l1=set([]) 4l0=list(range(1,n+1)) 5for j in range(q): 6 a=input().split() 7 if a[0]=="1": 8 x=heapq.heappop(l0) 9 l1.add(x) 10 elif a[0]=="3": 11 print(min(l1)) 12 else: 13 l1.remove(int(a[1]))
頑張ってTLEを減らしたんですが、どうしても 01_random_06.txt と 01_random_09.txt という二つのケースのみでTLEが出ます
A, B, CとACしてそのあと80分くらいずっとこのTLE解消しようとしていて(絶対E問題を見るべきだった)コンテスト終了したので、結構悔しいです
なぜTLEになるのか、どうしたら解決できるのか、教えていただきたいです
よろしくお願いします
捕捉
以下のコードでも同じケースのTLEで引っかかりました
python
1n,q=map(int,input().split()) 2l=[0]*n 3p=[] 4l0m=1 5l1=set([]) 6for j in range(q): 7 a=input().split() 8 if a[0]=="1": 9 l1.add(l0m) 10 while l0m in l1: 11 l0m+=1 12 elif a[0]=="3": 13 print(min(l1)) 14 else: 15 l1.remove(int(b))
できればこのTLEの解説もお願いしたいです

回答2件
あなたの回答
tips
プレビュー