Résolution avec Ruby, Perl, Java et Python AtCoder ARC 086 C Hash Sorting

introduction

Ce thème

AtCoder Regular Contest 086 C - Not so Diverse Difficulty: 431

Ce thème, une sorte de hachage Ruby En parlant de listes en double, c'est un hachage.

ruby.rb


n, k = gets.split.map(&:to_i)
a = gets.split.map(&:to_i)
h = Hash.new(0)
a.each do |x|
  h[x] += 1
end
puts n - h.values.sort.reverse[0, k].inject(:+)

before.rb


h.sort_by{|key, v| -v}.each do |key, v|

after.rb


puts n - h.values.sort.reverse[0, k].inject(:+)

~~ * Ruby * ne fournit pas de tri destructif des hachages, mais il semble que ces utilisations soient peu nombreuses. ~~ ** Addenda ** Le code original était de trier les hachages, mais dans les commentaires, j'ai eu l'idée de prendre le côté des valeurs sous forme de tableau, de tri, de découpage et de sommation. Python

python.py


from collections import defaultdict

n, k = map(int, input().split())
a = list(map(int, input().split()))
h = defaultdict(int)
for x in a:
    h[x] += 1
ans = 0
i = 0
for key, v in sorted(h.items(), key=lambda x: -x[1]):
    i += 1
    if i > k:
        ans += v
print(ans)

sort.py


for key, v in sorted(h.items(), key=lambda x: -x[1]):

Pour * Python *, cela s'appelle un dictionnaire plutôt qu'un hachage. De plus, de nombreux joueurs utilisent «Counter» au lieu de «defaultdict». Perl

perl.pl


chomp (my ($n, $k) = split / /, <STDIN>);
chomp (my @a = split / /, <STDIN>);
my %h;
$h{$_}++ for @a;
my ($c, $ans) = (0, 0);
for my $v (sort {$b <=> $a} values %h) {
  $c++;
  $ans += $v if $c > $k;
}
print "$ans\n";

sort.pl


for my $v (sort {$b <=> $a} values %h) {

Le tri * Perl * est simple. Java

java.java


import java.util.*;
import java.util.stream.Collectors;

class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = Integer.parseInt(sc.next());
        int k = Integer.parseInt(sc.next());
        HashMap<Integer, Integer> h = new HashMap<>();
        for (int i = 0; i < n; i++) {
            int a = Integer.parseInt(sc.next());
            h.merge(a, 1, Integer::sum);
        }
        sc.close();
        List<Integer> s = new ArrayList<>(h.values());
        Collections.sort(s);
        int ans = 0;
        for (int i = s.size() - k - 1; i >= 0; i--) {
            ans += s.get(i);
        }
        System.out.println(ans);
    }
}

sort.java


        List<Integer> s = new ArrayList<>(h.values());
        Collections.sort(s);

Pour * Java *, il est converti en liste et trié. ** Addenda ** J'ai modifié le code à partir des commentaires.

Ruby Python Perl Java
Longueur du code 156 Byte 286 Byte 226 Byte 723 Byte
Temps d'exécution 187 ms 261 ms 214 ms 620 ms
Mémoire 32880 KB 39352 KB 46668 KB 70772 KB

Résumé

Site référencé

Recommended Posts

Résolution avec Ruby, Perl, Java et Python AtCoder ARC 086 C Hash Sorting
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 ARC 098 C Somme cumulative
Résolution avec Ruby, Perl, Java et Python AtCoder ABC 047 C Expression régulière
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, Perl, Java et Python AtCoder ABC 131 D Tri des tableaux
Simulation AtCoder ARC080 D résolue avec Ruby et Python
Résolution avec Ruby et Python AtCoder ARC 059 C Méthode du carré minimum
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 Diverta 2019 Concours de programmation Manipulation de chaînes C
Résolution en Ruby, Python et Java AtCoder ABC141 D Priority Queue
Comment écrire le bon shebang dans les scripts Perl, Python et Ruby
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
Comment générer une séquence en Python et C ++
Résoudre Atcoder ABC176 (A, B, C, E) en Python
Résoudre le tri des nombres (équivalent au rang D de paiza) en Python
Résoudre le nombre de mots (équivalent au rang C de paiza) en Python
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
Orienté objet en langage C: "○ ✕ game" a été refacturé et porté en Python
Hello World dans divers langages [Python / PHP / Java / Perl / Ruby]
AtCoder ABC168 Une expression de cas résolue en Ruby et Python
Résoudre Fizz Buzz (équivalent au rang C de paiza) en Python
Comment se connecter à AtCoder avec Python et soumettre automatiquement
AtCoder JSC2019 Qual B à résoudre par Ruby et Python
Algorithme de tri et implémentation en Python
Résoudre Atcoder ABC169 A-D avec Python
Résoudre ABC036 A ~ C avec Python
Ruby Python Java Tri insensible à la casse
Comment envelopper C en Python
Résoudre ABC037 A ~ C avec Python
Je veux résoudre APG4b avec Python (seulement 4.01 et 4.04 au chapitre 4)
Comment utiliser les fonctions dans des fichiers séparés version Perl et version Python
Comment afficher les octets de la même manière en Java et Python
Chevauchement d'expressions régulières en Python et Java
Résolution avec Ruby et Python AtCoder ABC057 C Décomposition du facteur premier Recherche complète de bits
Résoudre ABC175 A, B, C avec Python
Résumé de la façon d'écrire des instructions if (Scala, Java, Rust, langage C, C ++, langage Go, PHP, Perl, Python, Ruby)
Différences entre Ruby et Python dans la portée
Implémenter le filtre FIR en langage Python et C
Différences entre la syntaxe Python et Java
Récapitulatif de la façon d'écrire un décrément d'incrémentation (Scala, Java, Rust, langage C, C ++, langage Go, PHP, Perl, Python, Ruby, JavaScript)
Ecrire le fichier O_SYNC en C et Python
Résolution avec Ruby et Python AtCoder Tenka1 Programmer Contest C Somme cumulative
[Avec commentaire] Résoudre Fizz Buzz (équivalent au rang C de paiza) avec Python
Je voulais résoudre ABC159 avec Python
Résolution avec Ruby et Python AtCoder ABC172 C Dichotomie de somme cumulée
AtCoder Beginner Contest 170 B Problème Explication "Crane and Turtle" (Python3, C ++, Java)
Comment utiliser is et == en Python
Comment écrire Ruby to_s en Python
J'ai comparé la vitesse des expressions régulières en Ruby, Python et Perl (version 2013)
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
Différences dans la façon d'écrire du code source externe entre Ruby et Python