[JAVA] Verwenden Sie die Prioritätswarteschlange mit kotlin (1.0.0) von AtCoder (+ Untersuchen Sie die Umgebung des Richterservers).

AtCoder Anfängerwettbewerb 141 D Problem

https://atcoder.jp/contests/abc141/tasks/abc141_d Das gestrige AtCoderD-Problem war ein Rabattgutscheinproblem. Einfach ausgedrückt, die Frage ist, wie Sie Rabattgutscheine, die zum halben Preis beliebig oft verwendet werden können, effizient einlösen können.

Um den Rabatt effizient anwenden zu können, muss ich jedes Mal den Höchstpreis erhalten. Zu diesem Zweck verwenden wir PriorityQueue, mit dem Sie Elemente hinzufügen und den Maximalwert mit logN bzw. 1 erhalten können. (Ich wusste es zum ersten Mal, nachdem ich diesen Kommentar gelesen hatte)

Instanziieren Sie die PriorityQueue wie folgt:

Main.kt


    val tmpQueue: Queue<Int> = PriorityQueue<Int>() { i1: Int, i2: Int ->
        return@PriorityQueue i2 - i1
    }

Jetzt funktioniert es perfekt vor Ort! Ich dachte, aber AtCoders Richterserver gibt einen Kompilierungsfehler aus.

Main.kt:16:32: error: none of the following functions can be called with the arguments supplied: 

Nach der Untersuchung scheint es, dass der Konstruktor, der die PriorityQueue instanziiert, indem nur der Komparator übergeben wird, aus Java1.8 stammt, und ich dachte, dass es vor der PriorityQueue von Java1.8 war (int initialCapacity, Comparator <? Super E> -Komparator) Bei der Verwendung wurde der Kompilierungsfehler behoben.

Main.kt


    val tmpQueue: Queue<Int> = PriorityQueue<Int>(size) { i1: Int, i2: Int ->
        return@PriorityQueue i2 - i1
    }

Apropos, ich kenne die Laufzeitversion des Richterservers nicht, also schreibe ich ein Programm, das Systeminformationen ausgibt und überprüft.

CodeTest.kt


fun main(args: Array<String>) {
    for ((key,value) in System.getProperties()) {
        println("key -> $key value -> $value")
    }
}

Das Ergebnis unten

key -> java.runtime.name value -> OpenJDK Runtime Environment
key -> sun.boot.library.path value -> /usr/lib/jvm/java-7-openjdk-amd64/jre/lib/amd64
key -> java.vm.version value -> 24.121-b00
key -> java.vm.vendor value -> Oracle Corporation
key -> java.vendor.url value -> http://java.oracle.com/
key -> path.separator value -> :
key -> java.vm.name value -> OpenJDK 64-Bit Server VM
key -> file.encoding.pkg value -> sun.io
key -> user.country value -> US
key -> sun.java.launcher value -> SUN_STANDARD
key -> sun.os.patch.level value -> unknown
key -> java.vm.specification.name value -> Java Virtual Machine Specification
key -> user.dir value -> /imojudge
key -> java.runtime.version value -> 1.7.0_121-b00
key -> java.awt.graphicsenv value -> sun.awt.X11GraphicsEnvironment
key -> java.endorsed.dirs value -> /usr/lib/jvm/java-7-openjdk-amd64/jre/lib/endorsed
key -> os.arch value -> amd64
key -> java.io.tmpdir value -> /tmp
key -> line.separator value -> 

key -> kotlin.home value -> /opt/kotlinc
key -> java.vm.spec...

Immerhin war die Laufzeit Java 1.7. Dies bedeutet, dass die in Java 1.8 hinzugefügten Methoden nicht verwendet werden können.

Ich muss in Zukunft vorsichtig sein. .. ..

Referenzlink

https://docs.oracle.com/javase/jp/8/docs/api/java/util/Comparator.html

Recommended Posts

Verwenden Sie die Prioritätswarteschlange mit kotlin (1.0.0) von AtCoder (+ Untersuchen Sie die Umgebung des Richterservers).
Ich habe versucht, mit Docker eine Plant UML Server-Umgebung zu erstellen
Bereiten Sie die CentOS 8-Umgebung mit Sakura VPS vor
Verwendung von git mit der Leistung von jgit in einer Umgebung ohne git-Befehle
CI die Architektur von Java / Kotlin-Anwendungen mit ArchUnit
Gibt an, ob die Serverseite zum Zeitpunkt der Systemwiederherstellung mit Kotlin oder Java erstellt werden soll
Verwendung des mit Tensorflow 2.0 trainierten Modells mit Kotlin / Java
Finden Sie mit Kotlin die Anzahl der Tage in einem Monat
Ich habe versucht, den Betrieb des gRPC-Servers mit grpcurl zu überprüfen
Koexistenz von Flyway in der eingebetteten Datenbank (h2) der Entwicklungsumgebung und der Release-Datenbank (SQL Server) mit Spring Boot