Lösen mit Ruby und Python AtCoder Tenka1 Programmer Contest C Kumulative Summe

Einführung

Dieses Thema

Tenka1 Programmer Contest C - Stones Difficulty: 946

Dieses Thema, kumulative Summe

Aus dem Problem ergibt sich, dass die endgültige Anordnung der Steine ganz weiß "........", ganz schwarz "########" oder links weiß rechts schwarz "..... # ist. Wechseln Sie zu einem von ## . Ein wenig nervig ist das Muster wie ". # .... #. #.", Das linke ". #." Ist "..." und das rechte "#. #." Der Mindestwert besteht darin, ihn in zu ändern. Nehmen Sie daher die kumulative Summe von "." Und "#" von links nach rechts, überprüfen Sie die Anzahl der Änderungen an dieser Position und ermitteln Sie den Mindestwert. 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

Es ist anomal, aber es ist eine kumulative Summe.

bw.rb


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

Ermitteln Sie zunächst die Anzahl der Fälle, in denen alle weiß und alle schwarz sind.

tugi.rb


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

Überprüfen Sie als nächstes die Nummer, wenn Sie an jeder Position zu links weiß rechts schwarz wechseln.

ord.rb


dot = '.'.ord

  if s[i] == dot

Es scheint, dass es etwas schneller ist, nach Zeichenwert zu vergleichen. 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
Codelänge(Byte) 457 631
Ausführungszeit(ms) 175 186
Erinnerung(KB) 16208 30024

Zusammenfassung

Recommended Posts

Lösen mit Ruby und Python AtCoder Tenka1 Programmer Contest C Kumulative Summe
Lösen mit Ruby, Perl, Java und Python AtCoder ARC 098 C Kumulative Summe
Lösen mit Ruby und Python AtCoder ARC 059 C Minimum-Quadrat-Methode
Lösen mit Ruby und Python AtCoder ABC011 C Dynamische Planungsmethode
Lösen mit Ruby und Python AtCoder ARC067 C Primfaktorisierung
Lösen mit Ruby, Perl, Java und Python AtCoder diverta 2019 Programmierwettbewerb C String Manipulation
AtCoder ARC104 B Kumulative Summe in Ruby, Python und Java gelöst
Lösen mit Ruby, Perl, Java und Python AtCoder ABC 065 C-te Potenz
Lösen mit Ruby und Python AtCoder ABC057 C Zerlegung des Primfaktors Bit vollständige Suche
Lösen mit Ruby, Perl, Java und Python AtCoder CADDi 2018 C Primfaktorisierung
Lösen mit Ruby und Python AtCoder ABC172 C Kumulative Summen-Dichotomie
Lösen mit Ruby und Python AtCoder ABC084 D Kumulative Summe der Primzahlen
Lösen mit Ruby und Python AtCoder CODE FESTIVAL 2016 qual C B Priority Queue
Lösen mit Ruby und Python AtCoder ABC178 D Dynamische Planungsmethode
Lösen mit Ruby und Python AtCoder ABC151 D Suche nach Breitenpriorität
Lösen mit Ruby und Python AtCoder AISING2020 D Iterative Square-Methode
Lösen mit Ruby, Perl, Java und Python AtCoder ATC 002 A.
Lösen mit Ruby und Python AtCoder ABC153 E Dynamische Planungsmethode
Lösen mit Ruby, Perl, Java und Python AtCoder ATC 002 B.
Lösen mit Ruby und Python AtCoder ABC138 D Benachbarte Liste
Lösen mit Ruby, Python und numpy AtCoder ABC054 B Matrixberechnung
Lösen mit Ruby, Python und networkx AtCoder ABC168 D Benachbarte Liste
Lösen mit Ruby, Perl, Java und Python AtCoder ABC 107 B String-Manipulation
AtCoder ABC130 D Kumulative Summen-Dichotomie, gelöst durch Ruby und Python
AtCoder ABC 165 D Bodenfunktion in Ruby, Perl, Java und Python gelöst
Lösen mit Ruby, Perl, Java und Python AtCoder ABC 131 D Sortieren von Arrays
Lösen mit Ruby, Perl, Java und Python AtCoder ABC 047 C Regulärer Ausdruck
AtCoder ABC110 C-String-Manipulation zum Lösen in Ruby
Lösen mit Ruby, Perl, Java und Python AtCoder ARC 066 C Iterativer Square Hash
Scraping mit Node, Ruby und Python
AtCoder ABC 114 C-755 mit Python3 gelöst
AtCoder Anfängerwettbewerb 174 C Problem (Python)
Erstellen Sie mit Python und GAS Termine für AtCoder-Wettbewerbe in Google Kalender
Lösen in Ruby, Python und Java AtCoder ABC141 D Priority Queue
Mit Ruby (Rails) verschlüsseln und mit Python entschlüsseln
Einfaches Web-Scraping mit Python und Ruby
RaspberryPi L Chika mit Python und C #
AtCoder Anfängerwettbewerb 170 B Problem "Crane and Turtle" Erklärung (Python3, C ++, Java)
AtCoder Beginner Contest 177 Erklärung des C-Problems "Summe der Produktpaare" (Python3, C ++, Java)
Lösen mit Ruby, Perl, Java und Python AtCoder ARC 086 C Hash-Sortierung
Lösen des Lorenz 96-Modells mit Julia und Python
Fordern Sie AtCoder (ABC) 164 mit Python heraus! A ~ C Problem
AtCoder ARC080 D Simulation mit Ruby und Python gelöst
C-Sprache, Java, Python-Benchmarks mit Primfaktorisierung
AtCoder Anfängerwettbewerb 176 C Problem "Schritt" Erklärung (Python3, C ++, Java)
Vergleich von CoffeeScript mit JavaScript-, Python- und Ruby-Grammatik
Versionsverwaltung von Node, Ruby und Python mit anyenv
Löse AtCoder 167 mit Python
Ruby, Python und Map
Python und Ruby teilen sich
[Python] Kumulative Summe ABC179D
AtCoder JSC2019 Qual B Gelöst von Ruby und Python
AtCoder Anfängerwettbewerb 166 A Erklärung des Problems "A? C" (Python3, C ++, Java)
AtCoder Anfängerwettbewerb 174 B Problem "Entfernung" Erklärung (C ++, Python, Java)
AtCoder-Anfängerwettbewerb 177 B Problem "Teilzeichenfolge" Erläuterung (Python3, C ++, Java)
[AtCoder Erklärung] Kontrollieren Sie ABC180 A, B, C Probleme mit Python!
Mandelbrot-Benchmark (C, PHP, HHVM, Ruby, Python, PyPy und Kinx)
AtCoder Anfängerwettbewerb 167 Ein Problem "Registrierung" Erklärung (Python3, C ++, Java)
AtCoder-Anfängerwettbewerb 169 B Problem "Multiplikation 2" Erläuterung (Python3, C ++, Java)
AtCoder ABC168 Ein in Ruby und Python gelöster Fallausdruck