Je l'ai résolu en pensant que je me souviens que le problème C était difficile car je l'avais résolu auparavant. Le problème C a des restrictions lâches, donc si vous remarquez que vous pouvez activer la triple boucle, vous pouvez vous le permettre.
Il n'y a pas beaucoup de modèles qui distinguent les observations en fonction de la valeur de la première entrée, alors soyez prudent.
answerA.py
x=int(input())
if x==1:
print("Hello World")
else:
a,b=int(input()),int(input())
print(a+b)
Trouvez le coût de la première route coûteuse dans le temps T. Cependant, s'il n'y a pas de route dans le temps T, TLE doit être sorti, il est donc nécessaire de spécifier une valeur de 1001 ou plus comme inf.
answerB.py
n,t=map(int,input().split())
ct=[list(map(int,input().split())) for i in range(n)]
c=10000000000000000
for i in range(n):
if ct[i][1]<=t:
c=min(c,ct[i][0])
print(c if c!=10000000000000000 else "TLE")
Tout d'abord, même si je pense à toutes les coordonnées du centre, il n'y a que 101 $ \ fois 101
answerC.py
n=int(input())
xyh=[list(map(int,input().split())) for i in range(n)]
xyh.sort(key=lambda x:x[2],reverse=True)
for X in range(0,101):
for Y in range(0,101):
f=True
H=xyh[0][2]+abs(xyh[0][0]-X)+abs(xyh[0][1]-Y)
for i in range(1,n):
x,y,h=xyh[i]
if h==0:
if H-abs(x-X)-abs(y-Y)>0:
f=False
break
else:
if H-abs(x-X)-abs(y-Y)!=h:
f=False
break
if f:
print(X,Y,H)
break
answerC_better.py
n=int(input())
xyh=[list(map(int,input().split())) for i in range(n)]
xyh.sort(key=lambda x:x[2],reverse=True)
for X in range(0,101):
for Y in range(0,101):
H=xyh[0][2]+abs(xyh[0][0]-X)+abs(xyh[0][1]-Y)
for i in range(1,n):
x,y,h=xyh[i]
if h!=max(H-abs(x-X)-abs(y-Y),0):
break
else:
print(X,Y,H)
break
Après une petite expérience et en observant l'échantillon, $ a_1, a_2,…, a_N $ sont tous des multiples de X lorsque l'engagement maximum est fixé à X. Par conséquent, nous pouvons voir que M est un multiple de X. Par conséquent, X est une fraction de M. De plus, puisque $ a_1, a_2,…, a_N $ sont tous des multiples de X et que leur somme est M, elle doit être $ N \ leqq M / X $. Par conséquent, si vous considérez les fractions de M dans l'ordre et divisez M par cette fraction, vous pouvez trouver la plus grande dont le quotient est N ou plus comme réponse. Aussi, au contraire, j'ai pensé au nombre de réciproques qui serait n ou plus, et divisé par N par ce nombre (également à propos de la réciprocité), et j'ai demandé la plus grande comme réponse. La mise en œuvre de ceci ressemble à ceci: De plus, make_divisors est une fonction qui énumère les fractions de n.
answerD.py
def make_divisors(n):
divisors = []
for i in range(1, int(n**0.5)+1):
if n % i == 0:
divisors.append(i)
if i != n // i:
divisors.append(n//i)
divisors.sort()
return divisors
n,m=map(int,input().split())
ans=1
for i in make_divisors(m):
if i>=n:
ans=max(ans,m//i)
print(ans)
Recommended Posts