AtCoder Beginner Contest 112 Revue des questions précédentes

Temps requis

スクリーンショット 2020-04-18 13.48.33.png

Impressions

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.

Problème A

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)

Problème 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")

Problème C

Tout d'abord, même si je pense à toutes les coordonnées du centre, il n'y a que 101 $ \ fois 101 , j'ai donc décidé de décider une fois des coordonnées du centre (ici, il y a un total de trois paramètres pour les coordonnées du centre et la hauteur). Par conséquent, j'ai pensé qu'il serait préférable de fixer le paramètre de la coordonnée centrale et d'en faire uniquement le paramètre de la hauteur **.). ici,**Les coordonnées du centre et la hauteur de la pyramide peuvent être spécifiées dans exactement un**Coordonnées du centre donc fixes(X,Y)Si c'est la bonne réponse, les informations sont**Toutes les informations exactes**Et si les coordonnées du centre fixe ne sont pas la bonne réponse**Certaines informations sont incorrectes**ことになります。ici,情報がToutes les informations exactesとなるということは、高度が1でないような情報から高さHを定めてそれ以外の情報について**h_i=max(H-|x_i-X|-|y_i-Y|,0)$Essayez juste de voir si**est. De plus, comme la hauteur H est déterminée à partir des informations dont l'altitude n'est pas 1, le tri par ordre décroissant est effectué en premier afin de mettre l'altitude du premier élément à 1.

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

Problème D

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

AtCoder Beginner Contest 102 Revue des questions précédentes
AtCoder Beginner Contest 072 Revue des questions précédentes
AtCoder Beginner Contest 085 Revue des questions précédentes
AtCoder Beginner Contest 062 Revue des questions précédentes
AtCoder Beginner Contest 113 Revue des questions précédentes
AtCoder Beginner Contest 074 Revue des questions précédentes
AtCoder Beginner Contest 051 Revue des questions précédentes
AtCoder Beginner Contest 127 Revue des questions précédentes
AtCoder Beginner Contest 119 Revue des questions précédentes
AtCoder Beginner Contest 151 Revue des questions précédentes
AtCoder Beginner Contest 075 Revue des questions précédentes
AtCoder Beginner Contest 054 Revue des questions précédentes
AtCoder Beginner Contest 110 Revue des questions précédentes
AtCoder Beginner Contest 117 Revue des questions précédentes
AtCoder Beginner Contest 070 Revue des questions précédentes
AtCoder Beginner Contest 105 Revue des questions précédentes
AtCoder Beginner Contest 112 Revue des questions précédentes
AtCoder Beginner Contest 076 Revue des questions précédentes
AtCoder Beginner Contest 089 Revue des questions précédentes
AtCoder Beginner Contest 069 Revue des questions précédentes
AtCoder Beginner Contest 079 Revue des questions précédentes
AtCoder Beginner Contest 056 Revue des questions précédentes
AtCoder Beginner Contest 087 Revue des questions précédentes
AtCoder Beginner Contest 067 Revue des questions précédentes
AtCoder Beginner Contest 093 Revue des questions précédentes
AtCoder Beginner Contest 046 Revue des questions précédentes
AtCoder Beginner Contest 123 Revue des questions précédentes
AtCoder Beginner Contest 049 Revue des questions précédentes
AtCoder Beginner Contest 078 Revue des questions précédentes
AtCoder Beginner Contest 081 Revue des questions précédentes
AtCoder Beginner Contest 047 Revue des questions précédentes
AtCoder Beginner Contest 060 Revue des questions précédentes
AtCoder Beginner Contest 104 Revue des questions précédentes
AtCoder Beginner Contest 057 Revue des questions précédentes
AtCoder Beginner Contest 121 Revue des questions précédentes
AtCoder Beginner Contest 126 Revue des questions précédentes
AtCoder Beginner Contest 090 Revue des questions précédentes
AtCoder Beginner Contest 103 Revue des questions précédentes
AtCoder Beginner Contest 061 Revue des questions précédentes
AtCoder Beginner Contest 059 Revue des questions précédentes
AtCoder Beginner Contest 044 Revue des questions précédentes
AtCoder Beginner Contest 083 Revue des questions précédentes
AtCoder Beginner Contest 048 Revue des questions précédentes
AtCoder Beginner Contest 124 Revue des questions précédentes
AtCoder Beginner Contest 116 Revue des questions précédentes
AtCoder Beginner Contest 097 Revue des questions précédentes
AtCoder Beginner Contest 088 Revue des questions précédentes
AtCoder Beginner Contest 092 Revue des questions précédentes
AtCoder Beginner Contest 099 Revue des questions précédentes
AtCoder Beginner Contest 065 Revue des questions précédentes
AtCoder Beginner Contest 053 Revue des questions précédentes
AtCoder Beginner Contest 094 Revue des questions précédentes
AtCoder Beginner Contest 063 Revue des questions précédentes
AtCoder Beginner Contest 107 Revue des questions précédentes
AtCoder Beginner Contest 071 Revue des questions précédentes
AtCoder Beginner Contest 064 Revue des questions précédentes
AtCoder Beginner Contest 082 Revue des questions précédentes
AtCoder Beginner Contest 084 Revue des questions précédentes
AtCoder Beginner Contest 068 Revue des questions précédentes
AtCoder Beginner Contest 058 Revue des questions précédentes
AtCoder Beginner Contest 043 Revue des questions précédentes