Wenn ich normalerweise die Zählmethode von Python verwendete, tat ich TLE. Als ich versuchte, Counter zu verwenden, konnte ich AC.
Unten ist die Antwort mit Counter.
code.py
import sys
from collections import Counter
N=int(sys.stdin.readline())
L=list(map(int,sys.stdin.readline().split()))
C=Counter(L) #In L enthalten{Brief:Anzahl der Auftritte}Ich werde mit dem Wörterbuchtyp zurückkommen
x=0
for a in C.values(): #Extrahieren Sie nur den Wert (Anzahl der Vorkommen)
x += int(a*(a-1)/2)
for K in range(N):
print(x-C[L[K]]+1) #Subtrahieren Sie die Kombination, die K enthält, von der gleichen Anzahl von Kombinationen
Unten ist die TLE-Antwort. Wird es mit ein wenig Basteln schneller gehen?
code.py
import sys
N=int(sys.stdin.readline())
L=list(map(int,sys.stdin.readline().split()))
C=list(set(L))
x=0
for i in range(len(C)):
a = L.count(C[i])
x += int(a*(a-1)/2)
for K in range(N):
print(x-L.count(L[K])+1)
Recommended Posts