Lösen mit Ruby, Perl, Java und Python AtCoder ARC 086 C Hash-Sortierung

Einführung

Dieses Thema

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

Dieses Thema, eine Art Hash Ruby Apropos doppelte Listen, es ist ein Hash.

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 * bietet keine destruktive Sortierung von Hashes, aber es scheint, dass es nur wenige solcher Verwendungen gibt. ~~ ** Nachtrag ** Der ursprüngliche Code bestand darin, die Hashes zu sortieren, aber in den Kommentaren kam mir die Idee, die Werteseite als Array zu betrachten, zu sortieren, zu schneiden und zu summieren. 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]):

Für * Python * wird es eher als Wörterbuch als als Hash bezeichnet. Außerdem verwenden viele Spieler "Counter" anstelle von "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) {

Das Sortieren von * Perl * ist einfach. 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);

Für * Java * wird es in eine Liste konvertiert und sortiert. ** Nachtrag ** Ich habe den Code aus den Kommentaren geändert.

Ruby Python Perl Java
Codelänge 156 Byte 286 Byte 226 Byte 723 Byte
Ausführungszeit 187 ms 261 ms 214 ms 620 ms
Erinnerung 32880 KB 39352 KB 46668 KB 70772 KB

Zusammenfassung

Referenzierte Site

Recommended Posts

Lösen mit Ruby, Perl, Java und Python AtCoder ARC 086 C Hash-Sortierung
Lösen mit Ruby, Perl, Java und Python AtCoder ARC 066 C Iterativer Square Hash
Lösen mit Ruby, Perl, Java und Python AtCoder ARC 098 C Kumulative Summe
Lösen mit Ruby, Perl, Java und Python AtCoder ABC 047 C Regulärer Ausdruck
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, Perl, Java und Python AtCoder CADDi 2018 C Primfaktorisierung
Lösen mit Ruby, Perl, Java und Python AtCoder ABC 131 D Sortieren von Arrays
AtCoder ARC080 D Simulation mit Ruby und Python gelöst
Lösen mit Ruby und Python AtCoder ARC 059 C Minimum-Quadrat-Methode
Lösen mit Ruby, Perl, Java und Python AtCoder ATC 002 A.
Lösen mit Ruby und Python AtCoder ARC067 C Primfaktorisierung
Lösen mit Ruby, Perl, Java und Python AtCoder ATC 002 B.
Lösen mit Ruby, Perl, Java und Python AtCoder diverta 2019 Programmierwettbewerb C String Manipulation
Lösen in Ruby, Python und Java AtCoder ABC141 D Priority Queue
So schreiben Sie den richtigen Shebang in Perl-, Python- und Ruby-Skripten
Lösen mit Ruby, Perl, Java und Python AtCoder ABC 107 B String-Manipulation
Lösen mit Ruby, Perl, Java und Python AtCoder AGC 033 Eine Suche mit Breitenpriorität
AtCoder ABC 165 D Bodenfunktion in Ruby, Perl, Java und Python gelöst
So generieren Sie eine Sequenz in Python und C ++
Löse den Atcoder ABC176 (A, B, C, E) in Python
Lösen der Nummernsortierung (entspricht Paiza Rang D) in Python
Lösen Sie die Wortanzahl (entspricht Paiza Rang C) in Python
Lösen mit Ruby und Python AtCoder ABC133 D Kumulative Summe
Lösen mit Ruby und Python AtCoder ABC011 C Dynamische Planungsmethode
Objektorientiert in C-Sprache: "○ ✕ game" wurde überarbeitet und nach Python portiert
Hallo Welt in verschiedenen Sprachen [Python / PHP / Java / Perl / Ruby]
AtCoder ABC168 Ein in Ruby und Python gelöster Fallausdruck
Löse Fizz Buzz (entspricht Paiza Rang C) in Python
So melden Sie sich mit Python bei AtCoder an und senden automatisch
AtCoder JSC2019 Qual B Gelöst von Ruby und Python
Sortieralgorithmus und Implementierung in Python
Löse den Atcoder ABC169 A-D mit Python
Löse ABC036 A ~ C mit Python
Ruby Python Java Sortierung ohne Berücksichtigung der Groß- und Kleinschreibung
So verpacken Sie C in Python
Löse ABC037 A ~ C mit Python
Ich möchte APG4b mit Python lösen (nur 4.01 und 4.04 in Kapitel 4)
Verwendung von Funktionen in separaten Dateien Perl-Version und Python-Version
So zeigen Sie Bytes in Java und Python auf die gleiche Weise an
Überlappende reguläre Ausdrücke in Python und Java
Lösen mit Ruby und Python AtCoder ABC057 C Zerlegung des Primfaktors Bit vollständige Suche
Löse ABC175 A, B, C mit Python
Zusammenfassung des Schreibens von if-Anweisungen (Scala, Java, Rust, C-Sprache, C ++, Go-Sprache, PHP, Perl, Python, Ruby)
Unterschiede zwischen Ruby und Python im Umfang
Implementieren Sie den FIR-Filter in Python und C.
Unterschiede zwischen Python- und Java-Syntax
Zusammenfassung zum Schreiben von Inkrementdekrementen (Scala, Java, Rust, C-Sprache, C ++, Go-Sprache, PHP, Perl, Python, Ruby, JavaScript)
Schreiben Sie die O_SYNC-Datei in C und Python
Lösen mit Ruby und Python AtCoder Tenka1 Programmer Contest C Kumulative Summe
[Mit Kommentar] Löse Fizz Buzz (entspricht Paiza Rang C) mit Python
Ich wollte ABC159 mit Python lösen
Lösen mit Ruby und Python AtCoder ABC172 C Kumulative Summen-Dichotomie
AtCoder Anfängerwettbewerb 170 B Problem "Crane and Turtle" Erklärung (Python3, C ++, Java)
Verwendung ist und == in Python
Wie schreibe ich Ruby to_s in Python
Ich habe die Geschwindigkeit regulärer Ausdrücke in Ruby, Python und Perl (Version 2013) verglichen.
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
Unterschiede beim Schreiben von externem Quellcode zwischen Ruby und Python