Résolution avec Ruby et Python AtCoder Tenka1 Programmer Contest C Somme cumulative

introduction

Ce thème

Tenka1 Programmer Contest C - Stones Difficulty: 946

Ce thème, somme cumulée

D'après le problème, la disposition finale des pierres est toute blanche ........, toute noire ########, ou gauche blanche droite noire..... # Passez à l'un des ##. Un peu ennuyeux est un modèle comme . # .... #. # ., La gauche. # . Est ... et la droite #. # . Est#### La valeur minimale est de le changer en. Par conséquent, prenez la somme cumulée de . et # de gauche à droite, vérifiez le nombre de changements à cette position et trouvez la valeur minimale. Ruby

ruby.rb


n = gets.to_i
s = gets.chomp.bytes
dot = '.'.ord
a = Array.new(n){Array.new(2, 0)}
if s[0] == dot
  a[0][0] = 1
else
  a[0][1] = 1
end
1.upto(n - 1) do |i|
  if s[i] == dot
    a[i][0] = a[i - 1][0] + 1
    a[i][1] = a[i - 1][1]
  else
    a[i][0] = a[i - 1][0]
    a[i][1] = a[i - 1][1] + 1
  end
end
min = [a[-1][0], a[-1][1]].min
n.times do |i|
  min = a[-1][0] - a[i][0] + a[i][1] if min > a[-1][0] - a[i][0] + a[i][1]
end
puts min

rui.rb


1.upto(n - 1) do |i|
  if s[i] == dot
    a[i][0] = a[i - 1][0] + 1
    a[i][1] = a[i - 1][1]
  else
    a[i][0] = a[i - 1][0]
    a[i][1] = a[i - 1][1] + 1
  end
end

C'est anormal, mais c'est une somme cumulative.

bw.rb


min = [a[-1][0], a[-1][1]].min

Tout d'abord, déterminez le nombre de cas lorsque tous sont blancs et quand tous sont noirs.

tugi.rb


  min = a[-1][0] - a[i][0] + a[i][1] if min > a[-1][0] - a[i][0] + a[i][1]

Ensuite, vérifiez le nombre lors du passage à gauche blanc droit noir à chaque position.

ord.rb


dot = '.'.ord

  if s[i] == dot

Il semble que la comparaison par valeur de caractère soit un peu plus rapide. Python

python.py


from sys import stdin

def main():
    input = stdin.readline

    n = int(input())
    s = input()
    a = [[0, 0] for _ in range(n)]
    if s[0] == '.':
        a[0][0] = 1
    else:
        a[0][1] = 1
    for i in range(1, n):
        if s[i] == '.':
            a[i][0] = a[i - 1][0] + 1
            a[i][1] = a[i - 1][1]
        else:
            a[i][0] = a[i - 1][0]
            a[i][1] = a[i - 1][1] + 1
    min = a[-1][0] if a[-1][0] < a[-1][1] else a[-1][1]
    for i in range(n):
        if min > a[-1][0] - a[i][0] + a[i][1]:
            min = a[-1][0] - a[i][0] + a[i][1]
    print(min)
main()
Ruby Python
Longueur du code(Byte) 457 631
Temps d'exécution(ms) 175 186
Mémoire(KB) 16208 30024

Résumé

Recommended Posts

Résolution avec Ruby et Python AtCoder Tenka1 Programmer Contest C Somme cumulative
Résolution avec Ruby, Perl, Java et Python AtCoder ARC 098 C Somme cumulative
Résolution avec Ruby et Python AtCoder ARC 059 C Méthode du carré minimum
Résolution avec Ruby et Python AtCoder ABC011 C Méthode de planification dynamique
Résolution avec Ruby et Python AtCoder ARC067 C factorisation premier
Résolution avec Ruby, Perl, Java et Python AtCoder Diverta 2019 Concours de programmation Manipulation de chaînes C
AtCoder ARC104 B Somme cumulative résolue en Ruby, Python et Java
Résolution avec Ruby, Perl, Java et Python AtCoder ABC 065 C-th power
Résolution avec Ruby et Python AtCoder ABC057 C Décomposition du facteur premier Recherche complète de bits
Résolution avec Ruby, Perl, Java et Python AtCoder CADDi 2018 C factorisation premier
Résolution avec Ruby et Python AtCoder ABC172 C Dichotomie de somme cumulée
Résoudre avec Ruby et Python AtCoder ABC084 D Somme cumulative des nombres premiers
Résolution avec Ruby et Python AtCoder CODE FESTIVAL 2016 qual C B Priority Queue
Résolution avec Ruby et Python AtCoder ABC178 D Méthode de planification dynamique
Résolution avec Ruby et Python AtCoder ABC151 D Recherche de priorité de largeur
Résolution avec Ruby et Python AtCoder AISING2020 D Méthode carrée itérative
Résolution avec Ruby, Perl, Java et Python AtCoder ATC 002 A
Résolution avec Ruby et Python AtCoder ABC153 E Méthode de planification dynamique
Résolution avec Ruby, Perl, Java et Python AtCoder ATC 002 B
Résolution avec Ruby et Python AtCoder ABC138 D Liste adjacente
Résolution avec Ruby, Python et numpy AtCoder ABC054 B Calcul de la matrice
Résolution avec Ruby, Python et networkx AtCoder ABC168 D Liste adjacente
Résolution avec Ruby, Perl, Java et Python AtCoder ABC 107 B Manipulation de chaînes
AtCoder ABC130 D Dichotomie de la somme cumulée résolue par Ruby et Python
AtCoder ABC 165 D Floor Function résolue en Ruby, Perl, Java et Python
Résolution avec Ruby, Perl, Java et Python AtCoder ABC 131 D Tri des tableaux
Résolution avec Ruby, Perl, Java et Python AtCoder ABC 047 C Expression régulière
Manipulation de chaîne C AtCoder ABC110 à résoudre dans Ruby
Résolution avec Ruby, Perl, Java et Python AtCoder ARC 066 C Hash carré itératif
Scraping avec Node, Ruby et Python
Résolu AtCoder ABC 114 C-755 avec Python3
AtCoder Beginner Contest 174 C Problème (Python)
Créez des rendez-vous pour le concours AtCoder sur Google Agenda avec Python et GAS
Résolution en Ruby, Python et Java AtCoder ABC141 D Priority Queue
Crypter avec Ruby (Rails) et décrypter avec Python
Scraping Web facile avec Python et Ruby
RaspberryPi L Chika avec Python et C #
AtCoder Beginner Contest 170 B Problème Explication "Crane and Turtle" (Python3, C ++, Java)
AtCoder Beginner Contest 177 Explication du problème C "Somme des produits de paires" (Python3, C ++, Java)
Résolution avec Ruby, Perl, Java et Python AtCoder ARC 086 C Hash Sorting
Résolution du modèle Lorenz 96 avec Julia et Python
Défiez AtCoder (ABC) 164 avec Python! Un problème ~ C
Simulation AtCoder ARC080 D résolue avec Ruby et Python
Benchmarks langage C, Java, Python avec factorisation prime
AtCoder Beginner Contest 176 Explication de l '«étape» du problème C (Python3, C ++, Java)
Comparaison de CoffeeScript avec la grammaire JavaScript, Python et Ruby
Gestion des versions de Node, Ruby et Python avec anyenv
Résolvez AtCoder 167 avec python
Ruby, Python et carte
Python et Ruby se séparent
[Python] Somme cumulée ABC179D
AtCoder JSC2019 Qual B à résoudre par Ruby et Python
AtCoder Beginner Contest 166 A Explication du problème "A? C" (Python3, C ++, Java)
AtCoder Beginner Contest 174 B Explication du problème "Distance" (C ++, Python, Java)
AtCoder Beginner Contest 177 B Explication du problème "Sous-chaîne" (Python3, C ++, Java)
[Explication AtCoder] Contrôle ABC180 Problèmes A, B, C avec Python!
Mandelbrot Benchmark (C, PHP, HHVM, Ruby, Python, PyPy et Kinx)
AtCoder Beginner Contest 167 Explication d'un problème "enregistrement" (Python3, C ++, Java)
AtCoder Beginner Contest 169 B Problème Explication "Multiplication 2" (Python3, C ++, Java)
AtCoder ABC168 Une expression de cas résolue en Ruby et Python