Wettbewerbsfähige Programmierung privater Spickzettel (Java)

Hinweis. Nacheinander hinzugefügt.

Runden Sie den Rest ab

public static int roundUp(int a, int b) {
    return (a + b - 1) / b;
}

Maximales Engagement

Berechnen Sie mit der euklidischen Methode der gegenseitigen Teilung.

Referenz: Beweis der euklidischen gegenseitigen Teilung und unbestimmten Gleichung | Schöne Geschichte der Mathematik der High School

private static long gcd(long a, long b) {
    if (b == 0) return a;
    return gcd(b, a % b);
}

Zum Beispiel, wenn a = 370 b = 273

Loop a b
1 370 273
2 273 370 % 273 = 117
3 117 273 % 117 = 39
4 39 117 % 39 = 0

Wenn b = 0 ist, gibt return a den Wert von a zurück. Dieser Wert ist die maximale Verpflichtung.

Minimales gemeinsames Vielfaches

Berechnen Sie mit der maximalen Verpflichtung.

Referenz: Zwei Beweise für die Art des Produkts des maximalen Versprechens und des minimalen Versprechens | Schöne Geschichte der Mathematik der High School

private static long lcm(long a, long b) {
    return a * b / gcd(a, b);
}

Rotationsmatrix

double rad = Math.toRadians(60);
double ux = (tx-sx)*Math.cos(rad) - (ty-sy)*Math.sin(rad)+sx;
double uy = (tx-sx)*Math.sin(rad) + (ty-sy)*Math.cos(rad)+sy;
Point u = new Point(ux, uy);

Anzahl der Kombinationen

Anzahl der Spalten

Sequenzaufzählung

Aufzählung von Kombinationen

Suche nach Breitenpriorität

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class DFS {

    private class Graph {
        List<List<Integer>> graph;
        boolean[] seen;

        public Graph(int n) {
            graph = new ArrayList<>();
            seen = new boolean[n];
            for (int i = 0; i < n; i++) {
                graph.add(new ArrayList());
                seen[i] = false;
            }
        }

        public void add(int from, int to) {
            graph.get(from).add(to);
            graph.get(to).add(from);
        }

        public void search(int v) {
            seen[v] = true;

            for (int next : graph.get(v)) {
                if (seen[next]) continue;
                search(next);
            }
        }
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        final int N = sc.nextInt();
        final int M = sc.nextInt();

        Graph graph = new DFS().new Graph(N);

        for (int i = 0; i < M; i++) {
            final int A = Integer.valueOf(sc.next());
            final int B = Integer.valueOf(sc.next());
            graph.add(A, B);
        }

        graph.search(0);
    }
}

Recommended Posts

Wettbewerbsfähige Programmierung privater Spickzettel (Java)
Programmiernotiz für Java-Wettbewerbe
Java Stream API Spickzettel
C # Spickzettel für Java-Techniker
Javac, Jar, Java Befehl Spickzettel
[Java] Spickzettel für Datentyp / Zeichenkettenklasse
JMeter Spickzettel
Grundlagen der Java-Programmierung
Java Generische Programmierung
Kotlin Spickzettel
[Docker Spickzettel]
Mockito + PowerMock Spickzettel
Einschränkungsprogrammierung in Java
Eclipse Sammlungen Cheet Sheet
Schienen Tutorial Cheet Sheet
Spring Boot2 Spickzettel
Java bezahlte private Memo
Java-Programmiergrundlagen Übungsarray
Java-Programmierung (Klassenmethode)
SCSS Notation Spickzettel
Java-Programmierung (Klassenstruktur)
Über Java-Kapselung privat öffentlich
Docker Befehl Spickzettel
Java Programming Thread Runnable
Java-Programmierung (Variablen und Daten)
Überprüfen Sie die private Methode der Java9-Schnittstelle
Java Development Basics-Practice ③ Fortgeschrittene Programmierung-
Grundlagen der Java-Programmierung Practice-for-Anweisung
[Eclipse] Shortcut Key Spickzettel
Grundlagen der Java-Programmierung Practice-Switch-Anweisung
[Java] Grundbegriffe der Programmierung
Cheet Sheet für Java-erfahrene Leute, um Ruby (Rails) zu lernen