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)

1. Objet

Résolvez 100 questions passées que les débutants et les intermédiaires devraient résoudre en Python. L'objectif est de devenir bleu clair lorsque vous avez terminé de tout résoudre.

Cet article s'intitule "053 --055 Planification dynamique: autres".

2. Résumé

Comme vous pouvez le voir dans "Autre", ces trois questions sont un peu différentes du précédent dp``` en termes d'orientation (préférence?), Et sont dp qui ne sont pas comme `` dp. J'ai ressenti cela.

3. Histoire principale

053 --055 Planification dynamique: Autre

053. DPL_1_D - Sous-colonne d'augmentation la plus longue

image.png

Répondre


import bisect

n = int(input())
A = [int(input()) for _ in range(n)]
dp = [A[0]]

for i in range(1, n):
    if A[i] > dp[-1]:
        dp.append(A[i])
    else:
        ind = bisect.bisect_left(dp, A[i])
        dp[ind] = A[i]

print(len(dp))

Résolvez avec dichotomie et DP.

dpDans l'ordre croissantaNous ajouterons les éléments de. En particulier,

  1. Pour tous les éléments A ```A [i] `` `
  2. Ajoutez quelque chose de plus grand que le dernier élément de `` dp``` à `dp```
  3. S'il n'est pas grand, il y a un nombre supérieur ou égal à A [i] in`` dp```, alors remplacez-le par ```A [i] ``.
  4. La réponse est la longueur du `` dp '' complété est.

054. AtCoder Beginner Contest 006 D --Trump Insert Sort

image.png

Répondre


import bisect

N = int(input())
C = [int(input()) for _ in range(N)]

dp = [C[0]] #valeur initiale

for i in range(1, N):
    if C[i] > dp[-1]:
        dp.append(C[i])
    else:
        ind = bisect.bisect_left(dp, C[i])
        dp[ind] = C[i]

print(N - len(dp))


  1. C'est presque la même chose que DPL_1_D - Sous-colonne d'augmentation maximale. La différence est le dernier print (N --len (dp)) ''. Le nombre de fois où vous devez insérer une carte à jouer est le nombre de cartes à jouer moins la longueur de la sous-colonne croissante la plus longue.

  1. AtCoder Beginner Contest 134 E - Sequence Decomposing image.png

Répondre


import bisect
from collections import deque

N = int(input())
A = [int(input()) for _ in range(N)]

dp = deque()
dp.append(A[0])

for i in range(1, N):
    ind = bisect.bisect_left(dp, A[i])

    if ind == 0:
        dp.appendleft(A[i])
    else:
        dp[ind-1] = A[i]

print(len(dp))


Changeons la façon de penser des deux problèmes ci-dessus. Dans les deux problèmes ci-dessus, les éléments au-dessus de la valeur maximale de `` dp``` étaient `ʻappend, Cette fois, les éléments en dessous de la valeur minimale sont appendleft```.


Recommended Posts

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)
Résoudre avec Python [100 questions passées que les débutants et les intermédiaires devraient résoudre] (028 --033 recherche de priorité de largeur)
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)
Résoudre avec Python [100 questions passées que les débutants et les intermédiaires devraient résoudre] (024 --027 Recherche de priorité en profondeur)
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)
[Python] J'ai essayé de résoudre 100 questions passées que les débutants et les intermédiaires devraient résoudre [Partie 5/22]
[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]
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ésoudre avec Python [100 questions passées sélectionnées que les débutants et les intermédiaires devraient résoudre] (005 --- 009 Toutes les recherches: Toutes les énumérations pour réduire le nombre de rues en concevant)
1er test pratique d'algorithme Résoudre les questions passées avec python
Programmation avec Python et Tkinter
Résolution avec Ruby et Python AtCoder ABC178 D Méthode de planification dynamique
Résolution avec Ruby et Python AtCoder ABC011 C Méthode de planification dynamique
Résolution avec Ruby et Python AtCoder ABC153 E Méthode de planification dynamique
2e test pratique de l'algorithme Résoudre les questions précédentes avec python (inachevé)
Conseils (entrée / sortie) à connaître lors de la programmation de compétitions avec Python2
Conseils (structure de contrôle) à connaître lors de la programmation de la compétition avec Python2
Conseils (structure de données) à connaître lors de la programmation de compétitions avec Python2
Raisonnement causal et recherche causale par Python (pour les débutants)
[Pour les professionnels de la compétition débutants] J'ai essayé de résoudre 40 questions AOJ "ITP I" avec python
Essayez de résoudre le livre des défis de programmation avec python3
Python que je voudrais recommander aux débutants en programmation
Résolvez des équations différentielles normales simultanées avec Python et SymPy.
Conseils à savoir lors de la programmation de compétitions avec Python2
Résolvez AtCoder 167 avec python
3. 3. Programmation IA avec Python
Programmation Python avec Atom
Résolvez POJ 2386 avec python
Programmation avec Python Flask
Je voulais résoudre le concours de programmation Panasonic 2020 avec Python
Comparez HTTP GET / POST avec cURL (commande) et Python (programmation)
Résolvez le livre en spirale (algorithme et structure de données) avec python!
Récurrence de mémorisation et méthode de planification dynamique connue de la séquence Python Fibonacci
Résoudre les problèmes d'AtCoder Boot camp pour les débutants (moyen 100) avec python
Résumé des modules qui automatisent et facilitent l'installation de WebDriver avec Python