[PYTHON] AtCoder Beginner Contest 048 Revue des questions précédentes

Temps requis

スクリーンショット 2020-02-28 19.15.34.png

Impressions

J'ai pris la première place pour la première fois à Bacha! , Banzai! Je veux faire un effort pour l'adapter si bien. D était un moment où j'ai appliqué la solution de base au problème du jeu. (Il y a eu un cas où j'ai oublié d'y penser en disant cela. Je le regrette.)

Problème A

Prenez simplement la première lettre dans l'ordre.

answerA.py


x=input().split()
print(x[0][0]+x[1][0]+x[2][0])

Problème B

Compte tenu du plus petit multiple de x au-dessus de a (fonction ceil) et du plus grand multiple de x en dessous de b (fonction de plancher), il est seulement nécessaire de compter le nombre de multiples de x entre les deux nombres (y compris les deux extrémités). Tu peux voir ça. Pour éviter les inexactitudes, j'ai utilisé l'opérateur // cette fois sans utiliser les fonctions ceil ou floor.

answerB.py


a,b,x=map(int,input().split())
A=-((-a)//x)
B=b//x
print(B-A+1)

Problème C

Il suffit que $ a_i + a_ {i + 1} <= x $ soit valable pour i = 1 à n-1. Ici, afin de minimiser le nombre d'opérations, ** considérez toutes les sommes de deux nombres adjacents **, il est donc préférable de ** le faire goulûment dans l'ordre de l'avant ** (je pense qu'il y a beaucoup de problèmes similaires avec AtCoder) .). Plus précisément, sous $ a_1 $ comme x ou moins, réduisez $ a_ {i + 1} $ de sorte que $ a_i + a_ {i + 1} <= x $ tienne de i = 1 à n-1. Faire. Si cela tient déjà, ne faites rien. Ici, vous pouvez réduire $ a_i $ ou $ a_ {i + 1} $, mais si vous réduisez $ a_ {i + 1} $, $ a_ {i + 1} + a_ {i + 2 Vous pouvez vous attendre à ce que $ a_j + a_ {j + 1} $ soit plus petit dans j> i car} $ sera plus petit. Par conséquent, à partir de là, on peut dire que le nombre minimum d'opérations peut être atteint en le faisant goulûment depuis l'avant.

answerC.py


n,x=map(int,input().split())
a=list(map(int,input().split()))
if a[0]>x:
    ans=a[0]-x
    a[0]=x
else:
    ans=0
for i in range(1,n):
    if a[i-1]+a[i]>x:
        ans+=(a[i-1]+a[i]-x)
        a[i]=x-a[i-1]
print(ans)

Problème D

C'est un problème de jouer à un jeu avec deux personnes. Il existe deux principales politiques de base pour ces questions. Le premier est ** faites attention à la phase finale du jeu **. Dans la programmation de compétition, il n'est souvent pas possible de tout simuler, il est donc souvent bon de se concentrer sur la phase finale. Le second est ** quelle est la phase du jeu **. Les jeux qui sont résolus par une programmation compétitive sont conçus pour être résolus, et beaucoup d'entre eux peuvent être divisés en plusieurs états. (Dans ce problème, les opérations sont effectuées en alternance, donc ** pair et impair ** sont également des points de contrôle importants.)

La solution est la suivante en considérant les deux points ci-dessus. Tout d'abord, dans la phase finale, vous pouvez voir que soit (1) il ne peut pas être supprimé car il ne reste plus que deux caractères (car il est aux deux extrémités), ou (2) il ne peut pas être supprimé car les mêmes caractères sont côte à côte. De plus, il est important que les caractères aux deux extrémités ** ne puissent jamais être supprimés **. En d'autres termes, les deux caractères restants dans le modèle (1) sont deux caractères aux deux extrémités, et les mêmes caractères adjacents l'un à l'autre dans le modèle (2) sont deux caractères aux deux extrémités (trois caractères au total). Ici, je pensais que la dernière chose qui restait était de deux ou trois caractères, mais ce n'est pas le cas avec des motifs comme abababa, dans lesquels deux types de caractères alternent. Je n'ai pas remarqué jusqu'à ce que j'ai vu la réponse ... La considération est douce. (Puisque le cas est divisé par pair et impair, cela n'a pas affecté le résultat.) Dans tous les cas, le nombre de caractères restants dans le motif (1) est ** pair ** et le nombre de caractères restant dans le motif (2) est ** impair **, donc quand n est pair dans le motif (1), le premier joueur perd et n Quand est impair, la deuxième attaque est perdue, quand n est pair dans le motif (2), la deuxième attaque est perdue et quand n est impair, la première attaque est perdue. (Pour plus de détails, reportez-vous à Answer.)

answerD.py


s=input()
n=len(s)
if s[0]==s[-1]:
    if n%2==0:
        print("First")
    else:
        print("Second")
elif s[0]!=s[-1]:
    if n%2==1:
        print("First")
    else:
        print("Second")

Recommended Posts

AtCoder Beginner Contest 102 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 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 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 047 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 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 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
AtCoder Beginner Contest 098 Revue des questions précédentes
AtCoder Beginner Contest 114 Revue des questions précédentes
AtCoder Beginner Contest 045 Revue des questions précédentes
AtCoder Beginner Contest 120 Revue des questions précédentes
AtCoder Beginner Contest 108 Revue des questions précédentes
AtCoder Beginner Contest 106 Revue des questions précédentes
AtCoder Beginner Contest 122 Revue des questions précédentes
AtCoder Beginner Contest 125 Revue des questions précédentes