Problème de la plus longue sous-séquence croissante
La programmation dynamique offre des solutions efficaces pour résoudre des problèmes d'optimisation combinatoire. Un classique est de déterminer la plus longue sous-séquence strictement croissante (LIS) dans une suite donnée. Cette section explore plusieurs approches algorithmiques, de la méthode naïve en O(n²) à l'optimisation en O(n log n), a ...
Publié le 15 juillet à 05h02
Journal de résolution de problèmes NOI 2026 (XVI)
A. [ARC210D] Jeu d'ensemble indépendant (5)
À chaque tour, un sommet u est supprimé, et A supprime également le voisinage de u. Si n est impair, A ne peut pas supprimer le voisinage, sinon l'ensemble de sommets devient vide. En explorant manuellement, on constate que dans ce cas, chaque composante connexe doit avoir ≤ 2 sommets. Si n est pair, ...
Publié le 14 juillet à 11h10
Nombre de chemins uniques avec obstacles (LeetCode 63 : Unique Paths II) en C++ et Java
Cet article présente une solution au problème LeetCode 63, qui consiste à compter le nombre de chemins uniques pour attteindre le coin inférieur droit d’une grille en présence d’obstacles. Le robot se déplace uniquement vers la droite ou vers le bas. Les obstacles sont représentés par la valeur 1 dans la grille, tandis que les cases vides sont ...
Publié le 14 juillet à 05h49
Solutions des Problèmes A à E : Codeforces Round 976 (Div. 2)
Problème A
Énoncé : On vous donne deux entiers \(n\) et \(k\). En une opération, vous pouvez soustraire n'importe quelle puissance de \(k\) (c'est-à-dire \(k^x\) pour \(x \ge 0\)) de \(n\). Trouvez le nombre minimum d'opérations pour réduire \(n\) à \(0\).
Analyse : La solution optimale consiste à représenter \(n\) en base \(k\). Le nombre mini ...
Publié le 12 juillet à 00h01
Algorithmes Essentiels en Langage C : Programmation Dynamique et Structures de Données
Programmation Dynamique
Problème du Sac à Dos
Sac à Dos 0/1
Approche : La programmation dynamique décompose un problème complexe en sous-problèmes plus simples. Pour le sac à dos 0/1, nous définissons une représentation d'état avec une propriété et calculons les transitions.
Considérons les premiers i objets avec un volume total j dans le sac. ...
Publié le 11 juillet à 04h50
Programmation dynamique en C++ : fondamentaux et résolution de problèmes
La programmation dynamique est une méthode algorithmique qui optimise la résolution de problèmes en les décomposant en sous-problèmes chevauchants, dont les solutions sont stockées pour éviter les recalculs. En C++, elle est couramment mise en œuvre à l'aide de tableaux pour mémoriser les états intermédiaires.
Calcul du nombre de chemins les pl ...
Publié le 6 juillet à 21h52
Approches Algorithmiques Avancées pour Problèmes Sélectionnés
Cet article explore diverses techniques algorithmiques à travers une sélection de problèmes de programmation compétitive, couvrant des domaines tels que la construction, la théorie des nombres, les structures de données avancées, la programmation dynamique et la théorie des graphes.
CF1667C Couverture par Semi-Dames
Tags: Construction, Mathémat ...
Publié le 5 juillet à 17h38
Problèmes de Codeforces Round 600 Division 2 : Analyse et solutions techniques
Problème C : Mangeur de bonbons
L'approche fondamentale consiste à trier les valeurs et, pour chaque i, sélectionner les i plus petites valeurs en plaçant les plus grandes en premier afin de réduire la pénalité au minimum. Si l'on note dp[i] la pénalité minimale obtenue avec les i premiers éléments, alors dp[i + m] = dp[i] + somme[1 : i+m], ce ...
Publié le 3 juillet à 02h08
Technique des sommes préfixes en algorithmique
Introduction aux sommes préfixes
La technique des sommes préfixes permet de répondre efficacement aux requêtes de somme sur un intervalle. Elle consiste à précalculer un tableau intermédiaire en O(N) pour ensuite répondre à chaque requête [l, r] en O(1) grâce à la formule : somme[r] - somme[l-1].
Problème de la fresque murale
Étiquettes : somme ...
Publié le 2 juillet à 07h57
Optimisation de Deux Chemins Non Sécants avec la Programmation Dynamique
Dans le cadre d'une activité de groupe, deux amis, Jean et Sophie, sont positionnés aux extrémités opposées d'une grille de M lignes et N colonnes. Jean est situé à la cellule (1, 1) (coin supérieur gauche) et Sophei à (M, N) (coin inférieur droit). Ils désirent échanger des messages. Un message de Jean à Sophie ne peut avancer que vers le bas ...
Publié le 2 juillet à 04h13