Résolution avec Ruby, Perl, Java et Python AtCoder ARC 098 C Somme cumulative

introduction

Ce thème

AtCoder Regular Contets C - Attention Difficulty: 641

Ce thème, somme cumulée Ruby Si l'on considère «WEWEWEEEWWWE» dans l'exemple d'entrée 2, cela devient «WEWEWEEiWWWE», et le nombre total de «W» sur le côté gauche de «i» et le nombre de «E» sur le côté droit est le nombre de personnes à calculer. De la gauche «0» à la droite «n-1» de la chaîne de caractères, «E» est une diminution monotone et «W» est une augmentation monotone, donc la ** somme cumulée ** est utilisée comme méthode pour réduire la quantité de calcul. ..

ruby.rb


n = gets.to_i
s = gets.chomp
e = (s[0] == 'E' ? [1] : [0])
w = (s[0] == 'W' ? [1] : [0])

1.upto(n - 1) do |i|
  if (s[i] == 'E')
    e[i] = e[i - 1] + 1
    w[i] = w[i - 1]
  else
    e[i] = e[i - 1]
    w[i] = w[i - 1] + 1
  end
end
w.unshift(0)
min = Float::INFINITY
0.upto(n - 1) do |i|
  min = e[-1] - e[i] + w[i] if min > e[-1] - e[i] + w[i]
end
puts min

sum.rb


1.upto(n - 1) do |i|
  if (s[i] == 'E')
    e[i] = e[i - 1] + 1
    w[i] = w[i - 1]
  else
    e[i] = e[i - 1]
    w[i] = w[i - 1] + 1
  end
end

La somme cumulée est calculée ici.

inf.rb


min = Float::INFINITY

L'infini est défini avec Float :: INFINITY. Python

python.py


import sys

n = int(input())
s = input()
e = [0] * n
w = [0] * (n + 1)
e[0] = 1 if s[0] == 'E' else 0
w[0] = 0
w[1] = 1 if s[0] == 'W' else 0
for i in range(1, n):
    if s[i] == 'E':
        e[i] = e[i - 1] + 1
        w[i + 1] = w[i]
    else:
        e[i] = e[i - 1]
        w[i + 1] = w[i] + 1
min = sys.maxsize
for i in range(n):
    if min > e[-1] - e[i] + w[i]:
        min = e[-1] - e[i] + w[i]
print(min)

max.py


min = sys.maxsize

La limite supérieure des nombres entiers est définie dans sys.maxsize. Perl

perl.pl


chomp (my $n = <STDIN>);
chomp (my $s = <STDIN>);
my (@e, @w);
$e[0] = (substr($s, 0, 1) eq 'E' ? 1 : 0);
$w[0] = (substr($s, 0, 1) eq 'W' ? 1 : 0);
for my $i (1..$n-1) {
  if (substr($s, $i, 1) eq 'E') {
    $e[$i] = $e[$i - 1] + 1;
    $w[$i] = $w[$i - 1];
  } else {
    $e[$i] = $e[$i - 1];
    $w[$i] = $w[$i - 1] + 1;
  }
}
unshift @w, 0;
my $min = inf;
for my $i (0..$n-1) {
  $min = $e[-1] - $e[$i] + $w[$i] if $min > $e[-1] - $e[$i] + $w[$i];
}
print "$min\n";

inf.pl


my $min = inf;

L'infini est défini avec ʻinf`. Java

java.java


import java.util.*;

class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = Integer.parseInt(sc.next());
        char s[] = sc.next().toCharArray();
        sc.close();
        int e[] = new int[n];
        int w[] = new int[n + 1];
        w[0] = 0;
        if (s[0] == 'E') {
            e[0] = 1;
            w[1] = 0;
        } else {
            e[0] = 0;
            w[1] = 1;
        }
        for (int i = 1; i < n; i++) {
            if (s[i] == 'E') {
                e[i] = e[i - 1] + 1;
                w[i + 1] = w[i];
            } else {
                e[i] = e[i - 1];
                w[i + 1] = w[i] + 1;
            }
        }
        int min = Integer.MAX_VALUE;
        for (int i = 0; i < n; i++) {
            if (min > e[n - 1] - e[i] + w[i])
                min = e[n - 1] - e[i] + w[i];
        }
        System.out.println(min);
    }
}

inf.java


        int min = Integer.MAX_VALUE;

ʻInteger.MAX_VALUE` définit la valeur maximale de l'entier.

Ruby Python Perl Java
Longueur du code 379 Byte 433 Byte 488 Byte 962 Byte
Temps d'exécution 160 ms 302 ms 255 ms 181 ms
Mémoire 7808 KB 17552 KB 22604 KB 32136 KB

Résumé

Site référencé

Recommended Posts

Résolution avec Ruby, Perl, Java et Python AtCoder ARC 098 C Somme cumulative
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, Perl, Java et Python AtCoder CADDi 2018 C factorisation premier
Résolution avec Ruby et Python AtCoder Tenka1 Programmer Contest C Somme cumulative
Résolution avec Ruby, Perl, Java et Python AtCoder ATC 002 A
Résolution avec Ruby et Python AtCoder ARC067 C factorisation premier
Résolution avec Ruby, Perl, Java et Python AtCoder ATC 002 B
Résolution avec Ruby, Perl, Java et Python AtCoder ARC 066 C Hash carré itératif
Résolution avec Ruby, Perl, Java et Python AtCoder Diverta 2019 Concours de programmation Manipulation de chaînes C
Résolution avec Ruby, Perl, Java et Python AtCoder ABC 107 B Manipulation de chaînes
Résolution avec Ruby, Perl, Java et Python AtCoder AGC 033 A Recherche de priorité de largeur
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
Résolution avec Ruby, Perl, Java et Python AtCoder ARC 086 C Hash Sorting
Résolution avec Ruby et Python AtCoder ABC133 D Somme cumulée
Résolution avec Ruby et Python AtCoder ABC011 C Méthode de planification dynamique
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 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 ABC153 E Méthode de planification dynamique
Résolution avec Ruby et Python AtCoder ABC138 D Liste adjacente
Résolution en Ruby, Python et Java AtCoder ABC141 D Priority Queue
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
AtCoder ABC130 D Dichotomie de la somme cumulée résolue par Ruby et Python
Manipulation de chaîne C AtCoder ABC110 à résoudre dans Ruby
Simulation AtCoder ARC080 D résolue avec Ruby et Python
Benchmarks langage C, Java, Python avec factorisation prime
Scraping avec Node, Ruby et Python
Résolu AtCoder ABC 114 C-755 avec Python3
Répertorier les chaînes de fractionnement et de jointure avec fractionnement et jointure (Perl / PowerShell / Java / Kotlin / Python)
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 du modèle Lorenz 96 avec Julia et Python
Défiez AtCoder (ABC) 164 avec Python! Un problème ~ C
paiza POH ec-campagne (C # / Java / Python / Ruby) # paizahack_01
Tendances 2014 du cadre d'application Web (PHP / Java / Ruby / Python / Perl)
AtCoder Beginner Contest 176 Explication de l '«étape» du problème C (Python3, C ++, Java)
Étudiez l'échange de données Java et Python avec Apache Arrow
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)
Comparaison grammaticale de base en cinq langues (C #, Java, Python, Ruby, Kotlin)
AtCoder Beginner Contest 167 Explication d'un problème "enregistrement" (Python3, C ++, Java)