Aide-mémoire privé pour la programmation compétitive (Java)

Remarque. Ajouté séquentiellement.

Arrondissez le reste

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

Engagement maximum

Calculez en utilisant la méthode de division mutuelle euclidienne.

référence: Preuve de la division mutuelle euclidienne et de l'équation indéfinie | Belle histoire de mathématiques au lycée

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

Par exemple, si 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

Lorsque b = 0, return a renvoie la valeur de a. Cette valeur est l'engagement maximum.

Multiple commun minimum

Calculez en utilisant l'engagement maximum.

référence: Deux preuves de la nature du produit de l'engagement maximum et de l'engagement minimum | Belle histoire de mathématiques au lycée

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

Matrice de rotation

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

Nombre de combinaisons

Le nombre de colonnes

Énumération de séquence

Énumération des combinaisons

Recherche de priorité de largeur

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

Aide-mémoire privé pour la programmation compétitive (Java)
mémo de programmation du concours java
Aide-mémoire de l'API Java Stream
Aide-mémoire C # pour les techniciens Java
javac, jar, feuille de triche de commande java
[Java] Aide-mémoire de classe de type de données / chaîne de caractères
Aide-mémoire JMeter
bases de la programmation Java
Programmation générique java
Aide-mémoire de Kotlin
[Aide-mémoire Docker]
Aide-mémoire Mockito + PowerMock
Programmation par contraintes en Java
Fiche technique des collections Eclipse
Fiche technique du didacticiel Rails
Aide-mémoire Spring Boot2
Mémo privé payant Java
Bases de la programmation Java Practice-array
Programmation Java (méthode de classe)
Aide-mémoire pour la notation SCSS
Programmation Java (structure de classe)
Tout sur la programmation Java
À propos de l'encapsulation Java Private Public
Aide-mémoire de la commande Docker
Thread de programmation Java exécutable
Programmation Java (variables et données)
Vérifier la méthode privée de l'interface Java9
Bases du développement Java-Pratique ③ Programmation avancée-
Instruction pratique de base de la programmation Java
[Eclipse] Aide-mémoire sur les touches de raccourci
Instruction de base de la programmation Java Practice-Switch
[Java] Termes de base en programmation
Cheet sheet pour les personnes expérimentées en Java pour apprendre Ruby (rails)