Livre Ali en python: Sec.2-4, structure de données

page 73: Expedition (POJ 2421)


# -*- coding: utf-8 -*-

from heapq import *

N = int(raw_input())
L = int(raw_input())
P = int(raw_input())
A = map(int,raw_input().split())
B = map(int,raw_input().split())

h = []

fuel = P
position = 0
ans = 0

A.append(L)
B.append(0)
N += 1

def solve():

    h = []

    fuel = P
    position = 0
    ans = 0


    for i in range(N):
        dl = A[i]-position

        while fuel - dl <0:
            if len(h) == 0:
                return -1
            fuel += -heappop(h)
            ans += 1
        fuel -=dl
        position = A[i]
        heappush(h,-B[i])

    return ans

print solve()

Contrairement à C ++ STL, python heappop () sort du plus petit élément, il correspond donc en inversant le signe.

page75: Réparation de clôture (PKU 3253) à nouveau



# -*- coding: utf-8 -*-

from heapq import *

N = int(raw_input())
L = map(int,raw_input().split())

h = []

cost = 0

for i in L:
    heappush(h,i)

while len(h)>1:
    l1 = heappop(h)
    l2 = heappop(h)
    cost += l1 + l2
    heappush(h,l1+l2)

print cost

La solution par heapq. Puisqu'il est importé du plus petit élément, le tas de python est tel qu'il est. Le montant du calcul est O (L, n log n).

page85: Chaîne alimentaire (POJ 1182)


# -*- coding: utf-8 -*-

from heapq import *
from unionfind import *

N = int(raw_input())
K = int(raw_input())
information = []
while 1:
    a = raw_input()
    if a == "":
        break
    information.append(map(int,a.split()))

u = unionfind(3 * N) 

ans = 0
for i in information:
    infclass = i[0]
    x = i[1]
    y = i[2]

    if x < 0 or x >=N or y <0 or y >=N or infclass <1 or infclass >2:
        ans +=1
        continue
    if infclass == 1:
        if u.issame(x, y+N) or u.issame(x, y+2*N):
            ans +=1
            continue
        else:
            u.unite(x, y)
            u.unite(x+N, y+N)
            u.unite(x+2*N, y+2*N)

    if infclass ==2:
        if u.issame(x, y) or u.issame(x, y+2*N):
            ans +=1
            continue
        else:
            u.unite(x, y+N)
            u.unite(x+N, y+2*N)
            u.unite(x+2*N, y)

print ans

Non, c'est drôle. En dupliquant les éléments, vous pouvez réduire le problème de regroupement, afin que Union-Find puisse les traiter à grande vitesse.

Après avoir terminé Sec2-4

Introduction et exercices pour les files d'attente prioritaires, les arbres de dichotomie, les arbres Union-Find.

Pour le moment, je l'ai écrit en utilisant les packages de recherche heapq et union.

Avant de passer à Sec2-5, je vais essayer de mettre en œuvre chacun d'eux moi-même.

Recommended Posts

Livre Ali en python: Sec.2-4, structure de données
Livre Ali en python: Graphique Sec.2 à 5
Livre Ali en python: méthode Dyxtra Sec.2-5
Livre Ali en python: Sec.2 à 5 Graph (préparation)
Livre Ali en python: Sec.2-3, Dynamic Planning (DP)
Livre Ali en python: page 42 numéros
Livre Ali en python: Auto-implémentation de la file d'attente prioritaire
Livre Ali en python: page 43 Planification des sections
Livre de fourmis en python: page 49 Réparation de clôture
Livre de fourmis en python: page 47 Armée de Saroumane (POJ 3069)
Gérer les données ambiantes en Python
Afficher les données UTM-30LX en Python
Livre Ali en python: page 45 Le plus petit problème dans l'ordre lexical (POJ3617)
Obtenez des données LeapMotion en Python.
Lire les données des tampons de protocole avec Python3
Obtenir des données de Quandl en Python
Gérez les données au format NetCDF avec Python
Structure de données Python apprise avec la chimioinfomatique
Hashing de données en R et Python
Algorithme de structure de données de livre d'images Python
Résolution de l'introduction d'AOJ aux algorithmes et aux structures de données en Python -Partie1-
Résolution de l'introduction d'AOJ aux algorithmes et aux structures de données en Python -Partie2-
Résolution de l'introduction d'AOJ aux algorithmes et aux structures de données en Python -Partie4-
Résolution de l'introduction d'AOJ aux algorithmes et aux structures de données en Python -Partie3-
[Python] Chapitre 04-06 Différentes structures de données (création de dictionnaire)
Obtenez des données supplémentaires vers LDAP avec python
Livre en spirale en Python! Python avec un livre en spirale! (Chapitre 14 ~)
Entrée / sortie de données en Python (CSV, JSON)
Essayez de travailler avec des données binaires en Python
[Python] Chapitre 04-03 Diverses structures de données (liste multidimensionnelle)
[Python] Chapitre 04-04 Diverses structures de données (voir liste)
Obtenez les données de l'API Google Fit en Python
Python: prétraitement en machine learning: acquisition de données
Obtenez des données Youtube en Python à l'aide de l'API Youtube Data
Livre de fourmis avec python (Chapter3 édition intermédiaire ~)
[Python] Chapitre 04-02 Diverses structures de données (manipulation de liste)
Représentez facilement des données graphiques dans le shell et Python
[Python] Chapitre 04-07 Diverses structures de données (manipulation de dictionnaire)
Python: prétraitement dans l'apprentissage automatique: conversion de données
Gérez les structures de données 3D avec les pandas
[Python] [Supplément] Chapitre 04-09 Structures de données diverses (théorie des ensembles et arithmétique dans les ensembles)
Obtenez des données de séries chronologiques de k-db.com avec Python
Quadtree en Python --2
Python en optimisation
CURL en Python
Métaprogrammation avec Python
Python 3.3 avec Anaconda
Géocodage en python
SendKeys en Python
Méta-analyse en Python
Variables Python et types de données appris avec la chimio-automatique
Unittest en Python
Analyse de données python
Recevoir et afficher les données de formulaire HTML en Python
[Python] Permutation des lignes et des colonnes de données Numpy
Époque en Python
Discord en Python
Lire les données de la table dans un fichier PDF avec Python
Visualisation en temps réel des données thermographiques AMG8833 en Python
Allemand en Python
DCI en Python