AtCoder ARC 081 C hash à résoudre en Ruby, Perl et Java

introduction

Ce thème

AtCoder Regular Contest C - Make a Rectangle Difficulty: 538

Ce thème, 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

Utilisez le hachage pour connaître le nombre d'occurrences. Je peux utiliser la méthode de filtrage dans Ruby (2.7.1), mais dans l'ancien environnement Ruby (2.3.3) d'AtCoder, cela devient ** RE ** </ font>. J'utilise donc la méthode de sélection. 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;

Il utilise des idiomes Perl.

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);
    }
}

J'utilise des expressions Java lambda. TreeMap est un hachage, mais Comparator.reverseOrder () peut trier automatiquement les clés par ordre décroissant. Il doit être converti en long comme mesure contre le dépassement d'entier.

Ruby Perl Java
Longueur du code 336 Byte 370 Byte 1199 Byte
Temps d'exécution 140 ms 135 ms 664 ms
Mémoire 14988 KB 28196 KB 48532 KB

Résumé

  • ARC 081 C résolu
  • Familiarisez-vous avec Ruby
  • Familiarisez-vous avec Perl
  • Familiarisez-vous avec Java

Site référencé

Recommended Posts

AtCoder ARC 081 C hash à résoudre en Ruby, Perl et Java
Tri par hachage AtCoder ABC 111 C résolu en Ruby, Perl et Java
Résolution avec Ruby, Perl et Java AtCoder ABC 113 C Reference
Résolution avec Ruby, Perl et Java AtCoder ABC 128 C
Concours de programmation AtCoder dwango B à résoudre en Ruby, Perl et Java
Résolution avec Ruby, Perl et Java AtCoder ABC 129 C (Partie 1)
De Java à C et de C à Java dans Android Studio
AtCoder ABC127 D hash à résoudre avec Ruby 2.7.1
Résoudre la moyenne multiset ARC104 D avec Scala, Java, C ++, Ruby, Perl, Elixir
Résolution avec Ruby, Perl et Java AtCoder ABC 129 C (Partie 2) Méthode de planification dynamique
Différences dans la gestion des chaînes entre Java et Perl
Résolvez AtCoder Beginner Contest 151 avec Java
Résolvez AtCoder Beginner Contest 150 avec Java
Résolvez AtCoder Beginner Contest 175 avec Java
Résolvez AtCoder Beginner Contest 160 avec Java
Résolvez AtCoder Beginner Contest 152 avec Java
Résolvez AtCoder Beginner Contest 156 avec Java
Recherche de priorité de largeur AtCoder ABC 136 D résolue en Ruby, Perl et Java
Essayez de résoudre Project Euler en Java
La direction de Java dans "C ++ Design and Evolution"
[Ruby / Refactoring] Du traitement itératif Ruby tel que Java et C au traitement itératif de type Ruby
Essayez d'intégrer Ruby et Java avec Dapr
Différences dans l'écriture des classes Java, C # et Javascript
Comment résoudre les problèmes d'expression en Java
Résolution avec Ruby AtCoder ACL Débutant Contest C Union Find (DSU)
Résolution avec Ruby AtCoder ABC177 D Union Find
AtCoder ABC127 D hash à résoudre avec Ruby 2.7.1
Tableau 2D AtCoder ABC129 D résolu en Ruby et Java
Organiser les builds dans des combinaisons C ++ / Java et Win / Linux
AtCoder Beginner Contest 170 A, B, C jusqu'au rubis
De Java à Ruby !!
Classes et instances Java comprises dans la figure
Comment convertir A en A et A en A en utilisant le produit logique et la somme en Java
Comment gérer les fichiers TSV et les fichiers CSV dans Ruby
Essayez de résoudre un problème FizzBuzz restreint en Java
Note secrète de Mathematical Girl 104e implémentée en Ruby et C
[Java] Changez la langue et les paramètres régionaux en anglais avec les options JVM
Reportez-vous à C ++ dans le module Android Studio (Java / kotlin)
Comment récupérer la valeur de hachage dans un tableau dans Ruby
Que s'est-il passé dans «Java 8 to Java 11» et comment créer un environnement
Comment appeler et utiliser l'API en Java (Spring Boot)
Raisons d'utiliser séparément Servlet et JSP dans le développement Java
Comment développer et enregistrer une application Sota en Java
Extension Ruby C et volatile
Reproduire l'énumération Java en C #
Histoire de remplacement C # et Java
Comment obtenir et ajouter des données depuis Firebase Firestore dans Ruby
[Android] Convertissez Map en JSON à l'aide de GSON avec Kotlin et Java
Comment résoudre l'erreur inconnue apparue lors de l'utilisation de slf4j en Java
Points à retenir et concepts dans le didacticiel Ruby on Rails
J'ai essayé de résoudre les 10 dernières questions qui devraient être résolues après m'être inscrit auprès d'AtCoder en Java
Comment itérer indéfiniment en Ruby
Lire le fichier de propriétés Java en C #
Essayez d'implémenter Yuma dans Ruby
Multithread pour s'adapter au modèle [Java]
Exemple d'encodage et de décodage en Java
Java, JavaScript, C # (différence d'affectation)
Comment apprendre JAVA en 7 jours
CGI en C et Dart: Introduction (1)