Selección máxima de estudiantes con restricciones de supervisión
En este problema, se consideran n estudiantes en un aula. Cada estudiante (excluyendo al monitor principal, asignado con identificador 0) supervisa a otro estudiante específico. El objetivo es seleccionar el mayor número posible de estudiantes para una tarea, garantizando que para cada estudiante seleccionado, al menos uno de sus supervisores d ...
Publicado el 7-18 14:24
Algoritmo de Tarjan: Componentes Biconectos y Puntos de Corte
P8435 【Plantilla】Componentes Biconectos por Nodos
#include <iostream>
#include <vector>
#include <stack>
#include <algorithm>
using namespace std;
const int MAXN = 500005;
vector<int> grafo[MAXN];
vector<int> componentes[MAXN];
int orden[MAXN], bajo[MAXN], tiempo;
int pila[MAXN], tope, numComponentes;
int ...
Publicado el 7-6 23:57
Programación Dinámica en Árboles: Soluciones Avanzadas
—¿Por qué empecé con esto antes de terminar la programación de intervalos...
P2664 Juego en Árboles
El problema plantea: tenemos un árbol con n nodos, donde cada nodo tiene un color (c_i). Definimos (s(i,j)) como la cantidad de colores distintos en el camino desde el nodo (i) hasta el nodo (j). Además, $$sum_i=\sum_{j=1}^n s(i, j)$$ Necesitamos ...
Publicado el 7-5 22:02
Algoritmos de Camino Más Corto en Grafos
Introducción
En competencias de programación y algorítmica, con frecuencia nos encontramos con problemas que requieren encontrar el camino más corto en grafos. Aunque inicialmente podríamos considerar usar DFS o BFS, estos algoritmos tienen limitaciones significativas: DFS tiene una complejidad temporal demasiado alta para grafos grandes, mient ...
Publicado el 7-2 21:31
Análisis y Soluciones de Algoritmos para Problemas de Competencia de Programación
Problema 1: Segmentación de Cadenas y Optimización
El objetivo de este problema es procesar una cadena binaria y encontrar el valor mínimo entre la mitad del segmento más largo de unos consecutivos y el segundo segmento más largo. La estrategia implica recorrer la cadena para identificar y almacenar las longitudes de todos los bloques contiguos ...
Publicado el 6-30 21:54
Soluciones al Concurso Principiante de AtCoder 335
Problema A: Cammbiar el último carácter
Modificar el último carácter de una cadena de entrada a '4'.
#include <bits/stdc++.h>
using namespace std;
void resolver() {
string entrada;
cin >> entrada;
entrada.back() = '4';
cout << entrada << endl;
}
int main() {
ios::sync_with_stdio(false);
cin.tie( ...
Publicado el 6-30 06:11
Análisis y Soluciones Algorítmicas: Optimización, Programación Dinámica y Recorrido de Árboles
Optimización de Distancia en Ascensores
Para determinar el piso óptimo donde ubicar un ascensor y minimizar la distancia total de recorrido, se evalúa el costo de establecer el ascensor en cada uno de los pisos disponibles. El costo se calcula sumando las distancias de ida y vuelta para cada persona, considerando su piso de origen, el piso del ...
Publicado el 6-28 01:11
Diámetro de un Árbol: Técnicas de Programación Dinámica y BFS
El diámetro de un árbol es la lnogitud del camino más largo entre dos nodos. Existen enfoques eficientes para calcularlo, como la programación dinámica en árboles y el algoritmo de doble búsqueda en amplitud (BFS).
Programación Dinámica en Árboles
Puede manejar aristas con pesos negativos.
Complejidad temporal: O(n).
Sea distancia[x] la máxima ...
Publicado el 6-24 07:06
Implementación de Dijkstra y Floyd para la reconstrucción de redes tras un desastre
Enfoque basado en Dijkstra: Este método presenta un rendimiento limitado, logrando solo 70 puntos en algunas pruebas, con una complejidad de O(n^3 log m). Es posible optimizarlo a Θ(n^3 log m + n), pero no se detallará aquí.
// Versión con Dijkstra
#include<stdio.h>
#include<queue>
#include<vector>
#include<cstring>
usin ...
Publicado el 6-24 06:26
Optimización de Problemas Algorítmicos con DP y Estructuras de Datos
T1: Conectividad en Gráficos Dirigidos
Análisis del Problema
Consideramos un grafo dirigido donde cada nodo tiene exactamente dos aristas entrantes y dos aristas salientes. El objetivo es determinar el número de formas de seleccionar nodos de tal manera que ninguna de las aristas internas de un ciclo se elija consecutivamente. La estructura de ...
Publicado el 6-22 21:08