[At Coder] Débutant Contest 175 Présentation de la solution ABCD python

Grades

C'était la première fois que je participais. J'ai répondu correctement à ABC, mais j'étais frustré par le problème D. L'algorithme semble correct, mais je n'ai pas pu terminer le bogue. La performance est de 904. image.png

Impressions

J'ai regardé diverses explications, mais je pense qu'il est important d'interpréter simplement le problème (correction de l'indice de 0, déplacement des coordonnées négatives en coordonnées positives avec des valeurs absolues, etc.). De plus, j'ai appris qu'il existe une méthode de solution qui les énumère toutes sans être particulière sur l'automatisation. Et la prochaine fois, je veux résoudre le problème D.

Problème A

--Ma réponse J'ai compté le nombre de Rs consécutifs

A.py



input_str = input()
cnt = 0
max_cnt = 0
for tmp in input_str:
    if tmp == "R":
        cnt +=1
        max_cnt = max(cnt, max_cnt)
    else:
        cnt = 0
        
print(max_cnt)

A_.py


s=input()
if s=="RRR":
    print(3)
elif s=="RRS" or s=="SRR":
    print(2)
elif s=="SSS":
    print(0)
else:
    print(1)

--Modèle En se concentrant uniquement sur R, il semble juger si cela s'applique à chaque motif continu. Référence: https://qiita.com/u2dayo/items/ce1b420344e451560b42

A__.py


s = input()
ans = 0

for i in range(1, 4):
    p = "R" * i
    if p in s:
        ans = i

print(ans)

Problème B

Je pense que les points étaient les suivants. (1) Dans plusieurs boucles, la valeur minimale de la boucle interne doit être la valeur du courant externe + 1. ② J'ai cherché sur Google parce que je ne connais pas les conditions du triangle

B.py


N = int(input())
input_list = list(map(int, input().split()))
pair_list = []
def triangle_check(a,b,c):
    return all([a+b>c, b+c>a, c+a>b, a!=b, b!=c,c!=a])
 
if N < 3:
    print(0)
else:
    for i in range(N):
        for j in range(i+1,N):
            for k in range(j+1,N):
                if triangle_check(input_list[i],input_list[j],input_list[k]):
                    pair_list.append([input_list[i],input_list[j],input_list[k]])
    print(len(pair_list))

Au fait, j'ai mal compris que c'était un problème plus avancé de ne compter que des paires uniques de combinaisons de longueurs, et j'ai perdu du temps. Dans ce cas, il a été implémenté à l'aide du code suivant. Référence: https://medium.com/@yamasaKit/2-python%E3%81%A7list%E3%81%AE%E4%B8%AD%E3%81%AElist%E3%82%92unique%E3%81 % AB% E3% 81% 99% E3% 82% 8B% E6% 96% B9% E6% B3% 95-f38d20e6674f

del_list_dup.py


duplicated_data = [tuple(d) for d in duplicated_data]
unique_data = set(duplicated_data)
unique_data = [list(d) for d in unique_data]

Problème C

Je pense que les points étaient les suivants.

--Valeur absolue de la valeur initiale X --Lorsque vous vous déplacez vers l'origine, vous avez ramifié selon que vous pouvez atteindre l'origine. --Si vous ne pouvez pas atteindre l'origine, rapprochez-vous le plus possible

c.py


X, K, D = list(map(int, input().split()))
X = abs(X)
syo, amari = divmod(X, D)
if amari > (D-amari):
    syo = syo +1
if syo >= K:
    print(X - K*D)
else: 
    remain_num = K - syo
    position = abs(X - syo*D)
    if remain_num%2 == 1:
        position = abs(position-D)
    print(position)

Problème D

(La réponse n'est pas correcte. Il y a un cas de test qui devient RE, nous allons donc corriger le bogue dès que le cas de test sera publié.) Je pense que les points étaient les suivants.

--Détection de boucle --Branch lorsque la valeur augmente et quand elle diminue pour chaque boucle --S'il descend pour chaque boucle, c'est une perte si vous répétez la boucle, alors trouvez la valeur maximale dans la première boucle --Si vous voulez monter pour chaque boucle, ajoutez le score de la boucle jusqu'à un avant la dernière boucle et la valeur maximale dans la section d'un avant la dernière boucle + la dernière boucle.

d.py


import numpy as np
N,K = list(map(int, input().split()))
input_list = list(map(int, input().split()))
input_list = list(np.array(input_list)-1)
c_list = list(map(int, input().split()))
 
def roop_func(l, i, start, return_list=[]):
    return_list.append(l[i])
    if l[i] == start:
        return return_list 
    return roop_func(l, l[i],start, return_list)
 
total_best = -100000000000000000000
for start in range(N):
    p_list = roop_func(input_list, start, start,[])
    epoc = sum([c_list[i] for i in p_list])
    if epoc <= 0: #Quand ça tombe à chaque fois qu'il tourne
        best = c_list[p_list[0]]
        current_score = c_list[p_list[0]]
        for i in range(1, min(K, len(p_list))):
            current_score += c_list[p_list[i]]
            if best < current_score:
                best = current_score
    else: #Quand ça monte à chaque fois qu'il tourne
        syo,amari = divmod(K, len(p_list))
        base = (syo-1) * epoc
        tmp = p_list
        p_list.extend(p_list[:amari])
        tmp2 = p_list
        best = c_list[p_list[0]] + base
        current_score = c_list[p_list[0]] + base
        for i in range(1, len(p_list)):
            current_score += c_list[p_list[i]]
            if best < current_score:
                best = current_score
    if best > total_best:
        total_best = best
        
print(total_best)

Recommended Posts

[At Coder] Débutant Contest 175 Présentation de la solution ABCD python
[Python] [BFS] Au concours de codeur pour débutants 168-D [.. Double Dots]
[Python] ABC159D (Mathématiques au lycée nCr) [At Coder]
[Python] Modèle Pro compétitif [Chez Coder]
Concours Atcoder Débutant 152 Kiroku (python)
[Pratique compétitive] J'ai essayé le concours AtCoder Beginner Contest 175 (A ~ C)
[At Coder] ABC085C - La réponse Python d'Otoshidama
(Python) ABC162-D Journal de discussion et solution
AtCoder Beginner Contest 174 C Problème (Python)
Chez Coder (08/09/2020)
Résolvez AtCoder Débutant Contest 170 D - Non divisible (ABC170D) avec python (tamis Eratostenes)
Concours pour débutants AtCoder: Réponses aux problèmes D Python
[Python] ABC175D
[Python] ABC133B (problème du triangle supérieur droit) [At Coder]
Débutant ABC154 (Python)
Concours AtCoder Débutant 177
Débutant ABC156 (Python)
mémo débutant python (9.2-10)
Concours AtCoder Débutant 179
mémo débutant python (9.1)
Notes de débutant Python
[Python] DP ABC184D
[Débutant] Tableau Python
Concours AtCoder Débutant 172
Concours AtCoder Débutant 180
Résolvez AtCoder Beginner Contest159 D --Banned K (ABC159D) avec python (le compte est trop lent!)
Débutant ABC155 (Python)
Concours AtCoder Débutant 173
python chez docker
[Débutant] Fonctions Python
Débutant ABC157 (Python)
PyQ ~ Python Débutant ~
Concours Atcoder Débutant 153
Remplir au codeur
Mémo débutant Python (2)
[Python] UnionFind ABC177D
Python débutant Zundokokiyoshi
Au Coder # 1 à minuit
Introduction de Python
[Python] AGC043A (problème de lecture et de DP) [At Coder]
AtCoder Beginner Contest 176 Explication de l '«étape» du problème C (Python3, C ++, Java)
[Pratique professionnelle de compétition] J'ai essayé chez Coder Beginner Selection