2e test pratique de l'algorithme Résoudre les questions précédentes avec python (inachevé)

Le deuxième problème de test pratique d'algorithme est résolu avec python. Nous le mettrons à jour dès qu'il sera résolu.

A Remplacez B par - et soyez prudent lorsque vous comparez le sous-sol et le rez-de-chaussée (par exemple 1F --B1 $ = $ 1 $ \ neq $ 2).

# A

def f(i):
    num = int(i.replace('B', '-').replace('F', ''))
    return num if 'B' not in i else num + 1

inp = input().split()
arr = list(map(f, inp))
ans = arr[0] - arr[1]
print(ans if ans >= 0 else -ans)

B Compte juste.

# B

S = input()

import collections
d = dict(collections.Counter(S))
print(max(d.keys(), key=lambda k: d[k]))

C Le nombre maximum d'éléments est d'environ 50 $ ^ 2 = 2500 $ (le nombre réellement traité est plus petit), il suffit donc d'étudier honnêtement tous les éléments.

# C

N = int(input())
Ss = list(input() for i in range(N))

for i in range(N-2, -1, -1):
    for j in range(2*N-1):
        if Ss[i][j] == '#':
            if j != 0 and Ss[i+1][j-1] == 'X':
                Ss[i] = Ss[i][:j] + 'X' + Ss[i][j+1:]
            if j != 2 * N - 1 and Ss[i+1][j+1] == 'X':
                Ss[i] = Ss[i][:j] + 'X' + Ss[i][j+1:]
            if Ss[i+1][j] == 'X':
                Ss[i] = Ss[i][:j] + 'X' + Ss[i][j+1:]

for s in Ss:
    print(s)

D Cela a également un petit nombre de modèles, il suffit donc d'étudier tous les modèles.

# D
 
S = input()
N = len(S)

# N = 0
if N == 0:
    print(0)
    exit()

# lenth = 1
ans = set([S[i] for i in range(N)]) | {'.'}
if N == 1:
    print(len(ans))
    exit()

# lenth = 2
for i in range(1, N):
    ans |= {'{}{}'.format(S[i-1], S[i]), '.{}'.format(S[i]), '{}.'.format(S[i-1])}
ans |= {'..'}
if N == 2:
    print(len(ans))
    exit()

for i in range(2, N):
    ans |= {'{}{}{}'.format(S[i-2], S[i-1], S[i]), '.{}{}'.format(S[i-1], S[i]), '{}.{}'.format(S[i-2], S[i]), \
            '{}{}.'.format(S[i-2], S[i-1]), '..{}'.format(S[i-2]), '.{}.'.format(S[i-1]), '{}..'.format(S[i])}
ans |= {'...'}
print(len(ans))

E Cela nécessite également un petit nombre de calculs, donc tous les éléments doivent être étudiés.

# E

N = int(input())
As = list(map(int, input().split()))

def replace_and_recursion(x, target, iter):
    x = As[x-1]
    if x-1 == target:
        return str(iter)
    else:
        return replace_and_recursion(x, target, iter+1)

print(' '.join([replace_and_recursion(i+1, i, 1) for i in range(N)]))

F Dès le premier jour, la tâche avec les points les plus élevés doit être traitée en premier. Le tri tous les jours n'a pas assez de temps, donc l'ajouter à un élément avec une bissectrice vous donnera suffisamment de temps de traitement.

# F
 
N = int(input())
ABs = [list(map(int, input().split())) for i in range(N)] + [[N, 0]]
import itertools
ABs = sorted(ABs, key=lambda ab: ab[0])
groups = {k:list(g) for k, g in itertools.groupby(ABs, key=lambda ab: ab[0])}
 
import bisect
sorted_arr = []
last = 0
for k in range(1, N+1):
    if k in groups.keys():
        group = groups[k]
        for g in group:
            index = bisect.bisect_right(sorted_arr, g[1])
            sorted_arr.insert(index, g[1])
 
    task = sorted_arr.pop(-1)
    print(last + task)
    last += task```

G

Créez une chaîne et supprimez-la. .. .. Si vous le faites, vous n'aurez pas assez de temps, vous pouvez donc stocker les informations de requête dans une file d'attente et les traiter à temps.

 G
 
Q = int(input())
Qs = [input().split() for i in range(Q)]
 
from collections import Counter, deque
deq = deque()
for q in Qs:
    if q[0] == '1':
        deq.append({'char': q[1], 'size': int(q[2])})
    if q[0] == '2':
        size = int(q[1])
        dic = {}
        while deq and size > 0:
            data = deq[0]
            if data['size'] >= size:
                dic[data['char']] = dic.get(data['char'], 0) + size
                deq[0]['size'] -= size
                size = 0
            else:
                dic[data['char']] = dic.get(data['char'], 0) + data['size']
                size -= data['size']
                deq.popleft()
 
        print(sum([dic[moji]**2 for moji in dic.keys()]))

H

S -> {1} -> {2} ... ->La transition d'état vers G doit être effectuée.

 H

N, M = list(map(int, input().split()))
A_matrix = [input() for i in range(N)]

max_cost = 10**9
number_loc_cost = {}
 rec
for i in range(N):
    A_row = A_matrix[i]
    for j in range(M):
        val = A_row[j]
        if val not in number_loc_cost.keys():
            number_loc_cost[val] = {}
        number_loc_cost[val][i * M + j] = max_cost

S_loc = number_loc_cost['S'].keys()
for s_loc in S_loc:
    number_loc_cost['S'][s_loc] = 0

targets = ['S'] + list(range(1, 9+1)) + ['G']
try:
    for i in range(len(targets)-1):
        frm = str(targets[i])
        to = str(targets[i+1])

        for f_loc in number_loc_cost[frm].keys():
            f_x, f_y = f_loc % M, f_loc // M
            for t_loc in number_loc_cost[to].keys():
                t_x, t_y = t_loc % M, t_loc // M
                cost = abs(f_x - t_x) + abs(f_y - t_y)
                number_loc_cost[to][t_loc] = min(number_loc_cost[to][t_loc], number_loc_cost[frm][f_loc] + cost)
    G_loc = list(number_loc_cost['G'].keys())[0]
    print(number_loc_cost['G'][G_loc])
except:
    print(-1)

I

Divisez la liste des participants en nombres pairs et impairs et comparez-les. Seuls les participants qui ont remporté la comparaison peuvent mettre à jour la liste des participants, puis répéter la même comparaison.

 I

N = int(input())
As = tuple(map(int, input().split()))

results = {}
id_to_power = {i: As[i] for i in range(2 ** N)}
ids = list(id_to_power.keys())


n = 1
while len(ids) > 1:
    size = len(ids)
    res = [id_to_power[ids[2*i]] > id_to_power[ids[2*i+1]] for i in range(size // 2)]

    for i in range(size // 2): results[ids[2*i+1] if res[i] else ids[2*i]] = n
    ids = [ids[2*i] if res[i] else ids[2*i+1] for i in range(size // 2)]
    n += 1

results[ids[0]] = n-1

for i in range(len(id_to_power)):
    print(results[i])

J

Stocke les données pour chaque profondeur de parenthèses et adapte les informations à la hiérarchie immédiatement supérieure lorsque les parenthèses sont fermées(d[depth-1] += d[depth] + d[depth][::-1])Fais juste.

 J

S = input()

res = ''
depth = 0
bracket_depth_to_str = {depth: ''}
for s in S:
    if s == '(':
        depth += 1
        bracket_depth_to_str[depth] = ''
    elif s == ')':
        bracket_depth_to_str[depth-1] += bracket_depth_to_str[depth] + bracket_depth_to_str[depth][::-1]
        depth -= 1
    else:
        bracket_depth_to_str[depth] += s

print(bracket_depth_to_str[0])

K

Pas encore après K.

L

M

N

O

Recommended Posts

2e test pratique de l'algorithme Résoudre les questions précédentes avec python (inachevé)
1er test pratique d'algorithme Résoudre les questions passées avec python
Explication du 3e test pratique de l'algorithme (PAST) (Python)
Résoudre avec Python [100 questions passées que les débutants et les intermédiaires devraient résoudre] (056 --059 Problème de l'itinéraire le plus court: méthode Dyxtra)
Résolution avec Python [100 questions passées que les débutants et les intermédiaires devraient résoudre] (053 --055 Méthode de planification dynamique: Autres)
Jugement des nombres premiers avec Python
Résolvez AtCoder 167 avec python
Jugement des nombres premiers avec python
Résoudre des maths avec Python
Résolvez POJ 2386 avec python
Résoudre avec Python [100 anciennes questions sélectionnées que les débutants et les intermédiaires devraient résoudre] (015 --017 Recherche complète: Recherche complète en avant)
Résoudre avec Python [100 questions passées sélectionnées que les débutants et les intermédiaires devraient résoudre] (010 --014 Recherche complète: Recherche complète de bits)
Résoudre avec Python [100 questions passées sélectionnées que les débutants et les intermédiaires devraient résoudre] (001 --004 Toutes les recherches: Toutes les énumérations)
[Python] Résoudre des équations avec sympy
Résolvez AtCoder ABC166 avec python
[Python3] Méthode Dikstra avec 14 lignes
solveur> Lien> Résoudre le solveur Excel avec python
Résoudre ABC163 A ~ C avec Python
Recommandation de résolution des problèmes d'AtCoder avec python (20200517-0523)
Résoudre ABC168 A ~ C avec Python
Sortie du journal de test unitaire avec python
Résoudre ABC162 A ~ C avec Python
Résoudre ABC167 A ~ C avec Python
Résoudre ABC158 A ~ C avec Python
Implémentation de la méthode Dyxtra par python
Résoudre avec Python [100 questions que les débutants et les intermédiaires devraient résoudre] (034-038 Méthode de planification dynamique: Knapsack DP basic)
Résolvez avec Python [100 questions passées que les débutants et les intermédiaires devraient résoudre] (039 --045 Méthode de planification dynamique: variante Knapsack DP)
[Python] Test super facile avec instruction assert
Test de stress avec Locust écrit en Python
Test WebUI avec Python2.6 + Selenium 2.44.0 - paramètre de profil
Rechercher le labyrinthe avec l'algorithme python A *
Comment faire un test de sac avec python
[Python] Résolvez 10 problèmes d'élite passés d'Atcoder
[AtCoder] Résoudre ABC1 ~ 100 Un problème avec Python
Intégration avec setuptools / python setup.py test / pytest-runner
Résoudre AtCoder ABC168 avec python (A ~ D)
Solve Lake Counting (POJ n ° 2386) avec Python3
Je voulais résoudre ABC172 avec Python
Développons un algorithme d'investissement avec Python 1
Rapport de participation au test pratique du 3e algorithme AtCoder
Essayez de résoudre le problème du voyageur de commerce avec un algorithme génétique (code Python)
[Python] J'ai essayé de résoudre 100 questions passées que les débutants et les intermédiaires devraient résoudre [Partie 7/22]
[Python] J'ai essayé de résoudre 100 questions passées que les débutants et les intermédiaires devraient résoudre [Partie 4/22]
[Python] J'ai essayé de résoudre 100 questions passées que les débutants et les intermédiaires devraient résoudre [Part3 / 22]
[Python] J'ai essayé de résoudre 100 questions passées que les débutants et les intermédiaires devraient résoudre [Partie 1/22]
[Python] J'ai essayé de résoudre 100 questions passées que les débutants et les intermédiaires devraient résoudre [Partie 6/22]