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.

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.
--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)
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]
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)
(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