AtCoder ARC 081 C-Hash, der in Ruby, Perl und Java gelöst werden muss

Einführung

Dieses Thema

AtCoder Regular Contest C - Make a Rectangle Difficulty: 538

Dieses Thema, Hash Ruby

ruby.rb


n = gets.to_i
c = gets.split.map(&:to_i)
h = {}
n.times do |i|
  if h[c[i]]
    h[c[i]] += 1
  else
    h[c[i]] = 1
  end
end
s = h.select{|k, v| v >= 4}.keys.sort{|a, b| b<=>a}
t = h.select{|k, v| v >= 2}.keys.sort{|a, b| b<=>a}
ans = 0
ans = s[0] * s[0] if s.size > 0
ans = [ans, t[0] * t[1]].max if t.size > 1
puts ans

Verwenden Sie den Hash, um die Anzahl der Vorkommen zu ermitteln. Ich kann die Filtermethode in Ruby (2.7.1) verwenden, aber in der alten Umgebung Ruby (2.3.3) von AtCoder wird sie zu ** RE ** </ font>. Also benutze ich die Auswahlmethode. Perl

perl.pl


use v5.18; # strict say state
use warnings;
use List::Util qw(max);

chomp (my $n = <STDIN>);
chomp (my @a = split / /, <STDIN>);
my %h;
$h{$_}++ for @a;
my @s = sort {$b <=> $a} grep {$h{$_} >= 4} keys %h;
my @t = sort {$b <=> $a} grep {$h{$_} >= 2} keys %h;
my $ans = 0;
$ans = $s[0] * $s[0] if @s > 0;
$ans = max($ans, $t[0] * $t[1]) if @t > 1;
say $ans;

Es werden Perl-Redewendungen verwendet.

hash.pl


$h{$_}++ for @a;

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 a[] = new int[n];
        for (int i = 0; i < n; i++) {
            a[i] = Integer.parseInt(sc.next());
        }
        sc.close();
        Map<Integer, Integer> h = new TreeMap<>(Comparator.reverseOrder());
        for (int i = 0; i < n; i++) {
            if (h.containsKey(a[i])) {
                h.put(a[i], h.get(a[i]) + 1);
            } else {
                h.put(a[i], 1);
            }
        }
        List<Integer> s = h.entrySet().stream()
                .filter(x -> x.getValue() >= 4)
                .map(x -> x.getKey())
                .collect(Collectors.toList());
        List<Integer> t = h.entrySet().stream()
                .filter(x -> x.getValue() >= 2)
                .map(x -> x.getKey())
                .collect(Collectors.toList());
        long ans = 0;
        if (s.size() > 0) {
            ans = (long) s.get(0) * s.get(0);
        }
        if (t.size() > 1) {
            ans = Math.max(ans, (long) t.get(0) * t.get(1));
        }
        System.out.println(ans);
    }
}

Ich verwende Java-Lambda-Ausdrücke. TreeMap ist ein Hash, aber Comparator.reverseOrder () kann die Schlüssel automatisch in absteigender Reihenfolge sortieren. Es sollte als Maß gegen einen ganzzahligen Überlauf in long konvertiert werden.

Ruby Perl Java
Codelänge 336 Byte 370 Byte 1199 Byte
Ausführungszeit 140 ms 135 ms 664 ms
Erinnerung 14988 KB 28196 KB 48532 KB

Zusammenfassung

  • ARC 081 C gelöst
  • Machen Sie sich mit Ruby vertraut
  • Machen Sie sich mit Perl vertraut
  • Machen Sie sich mit Java vertraut

Referenzierte Site

Recommended Posts

AtCoder ARC 081 C-Hash, der in Ruby, Perl und Java gelöst werden muss
AtCoder ABC 111 C Hash-Sortierung In Ruby, Perl und Java gelöst
Lösen mit Ruby, Perl und Java AtCoder ABC 113 C Referenz
Lösen mit Ruby, Perl und Java AtCoder ABC 128 C.
AtCoder dwango Programmierwettbewerb B zum Lösen in Ruby, Perl und Java B.
Lösen mit Ruby, Perl und Java AtCoder ABC 129 C (Teil 1)
Von Java nach C und von C nach Java in Android Studio
AtCoder ABC127 D Hash mit Ruby 2.7.1 zu lösen
Lösen Sie ARC104 D Multiset Mean mit Scala, Java, C ++, Ruby, Perl, Elixir
Lösen mit Ruby, Perl und Java AtCoder ABC 129 C (Teil 2) Dynamische Planungsmethode
Unterschiede im Umgang mit Zeichenfolgen zwischen Java und Perl
Löse den AtCoder-Anfängerwettbewerb 151 mit Java
Löse den AtCoder Beginner Contest 150 mit Java
Löse den AtCoder-Anfängerwettbewerb 175 mit Java
Löse den AtCoder-Anfängerwettbewerb 160 mit Java
Löse den AtCoder-Anfängerwettbewerb 152 mit Java
Löse den AtCoder-Anfängerwettbewerb 156 mit Java
AtCoder ABC 136 D Suche nach Breitenpriorität Gelöst in Ruby, Perl und Java
Versuchen Sie, Project Euler in Java zu lösen
Die Richtung von Java in "C ++ Design and Evolution"
[Ruby / Refactoring] Von der iterativen Ruby-Verarbeitung wie Java und C bis zur Ruby-ähnlichen iterativen Verarbeitung
Versuchen Sie, Ruby und Java in Dapr zu integrieren
Unterschiede beim Schreiben von Java-, C # - und Javascript-Klassen
So lösen Sie Ausdrucksprobleme in Java
Lösen mit Ruby AtCoder ACL Anfängerwettbewerb C Union Find (DSU)
Lösen mit Ruby AtCoder ABC177 D Union Find
AtCoder ABC127 D Hash mit Ruby 2.7.1 zu lösen
AtCoder ABC129 D 2D-Array In Ruby und Java gelöst
Organisieren Sie Builds in C ++ / Java- und Win / Linux-Kombinationen
AtCoder Anfängerwettbewerb 170 A, B, C bis Rubin
Von Java zu Ruby !!
In der Abbildung verstandene Java-Klassen und -Instanzen
So konvertieren Sie A in a und a in A mit logischem Produkt und Summe in Java
Umgang mit TSV-Dateien und CSV-Dateien in Ruby
Versuchen Sie, ein eingeschränktes FizzBuzz-Problem in Java zu lösen
Secret Note 104 von Mathematical Girl, implementiert in Ruby und C.
[Java] Ändern Sie Sprache und Gebietsschema mit JVM-Optionen in Englisch
Siehe C ++ im Android Studio-Modul (Java / Kotlin)
So rufen Sie den Hashwert in einem Array in Ruby ab
Was ist in "Java 8 bis Java 11" passiert und wie wird eine Umgebung erstellt?
Aufrufen und Verwenden der API in Java (Spring Boot)
Gründe, Servlet und JSP in der Java-Entwicklung getrennt zu verwenden
So entwickeln und registrieren Sie eine Sota-App in Java
Ruby C Erweiterung und flüchtig
Reproduzieren Sie die Java-Enumeration in C #
C # und Java überschreiben Story
Abrufen und Hinzufügen von Daten aus dem Firebase Firestore in Ruby
[Android] Konvertieren Sie Map in JSON mit GSON mit Kotlin und Java
So beheben Sie den unbekannten Fehler, der bei der Verwendung von slf4j in Java aufgetreten ist
Dinge, an die Sie sich erinnern sollten, und Konzepte im Ruby on Rails-Tutorial
Ich habe versucht, die letzten 10 Fragen zu lösen, die nach der Registrierung bei AtCoder in Java gelöst werden sollten
Wie man in Ruby auf unbestimmte Zeit iteriert
Lesen Sie die Java-Eigenschaftendatei in C #
Versuchen Sie, Yuma in Ruby zu implementieren
Multithreaded passend zur [Java] Vorlage
Beispiel für Codierung und Decodierung in Java
Java, JavaScript, C # (Unterschied in der Zuordnung)
Wie man JAVA in 7 Tagen lernt
CGI in C und Dart: Einführung (1)