Arquitectura Dinámica para la Gestión de Utilidades Mediante Reflexión en .NET
En el desarrollo de software, es común acumular pequeñas herramientas para tareas repetitivas, como el procesamiento masivo de datos o la manipulación de archivos. Un error recurrente es centralizar estas utilidades en un único proyecto de consola, saturando el método Main con bloques de código comentados y llamadas difíciles de rastrear. Para ...
Publicado el 7-31 00:19
Algoritmo de Línea de Barrido para el Cálculo de Áreas y Flujos
El concepto de línea de barrido (sweep line) es una técnica fundamental en la geometría computacional. Consiste en desplazar una línea imaginaria (generalmente vertical u horizontal) a través del plano, deteniéndose en puntos específicos donde ocurren eventos relevantes para procesar datos de manera eficiente.
Unión de Áreas Rectangulares
El pr ...
Publicado el 7-29 19:12
Resolución de problemas de suma de subconjuntos y variaciones de mochila 0-1 mediante Programación Dinámica
Partición de un conjunto en subconjuntos de suma igual (LeetCode 416)
Este problema nos plantea determinar si un arreglo de números enteros puede dividirse en dos subconjuntos cuya suma sea idéntica. Matemáticamente, esto equivale a encontrar un subconjunto cuya suma sea exactamente la mitad de la suma total del arreglo.
Podemos modelar este es ...
Publicado el 7-27 12:02
Resolución de Tres Problemas Clásicos de Programación Dinámica
Problema 1: Subsecuencia Común Más Larga
Enunciado
Dadas dos cadenas de texto text1 y text2, determina la longitud de la subsecuencia común más larga entre ambas. Una subsecuencia se define como una nueva cadena generada a partir de la original mediante la eliminación de ciertos caracteres, respetando el orden relativo de los caracteres restant ...
Publicado el 7-19 00:09
Cálculo de la subsecuencia palindrómica más larga mediante programación dinámica
El desafío consiste en encontrar la longitud de la subsecuencia más larga dentro de una cadena s que cumpla con la propiedad de ser un palíndromo. A diferencia de un subsegmento contiguo, una subsecuencia se forma eliminando cero o más caracteres sin alterar el orden relativo de los caracteres restantes.
Por ejemplo, si la entrada es "bbba ...
Publicado el 7-18 20:23
Guía de Ejercicios en Programación Dinámica con Código en C++
Problema: Calcular el número de formas de alcanzar sumas específicas usando un conjunto de items, y luego determinar el efecto de remover cada item individualmente.
Solución: Se utiliza DP para calcular todas las combinaciones y luego se sustrae la contribución de cada item usando recálculo parcial.
// Código modificado para el problema P4141
# ...
Publicado el 7-12 07:53
Resolución en C++ del problema USACO P2954 Grazing2 S
Problema de asignación de vacas a puestos de establo: se tienen N vacas (2 ≤ N ≤ 1500) y S puestos (N ≤ S ≤ 1,000,000) en una línea, con distancias unitarias entre puestos adyacentes. Dadas las posiciones iniciales P_i de las vacas, se deben reubicar para que las distancias entre vacas adyacentes difieran en a lo sumo 1 de D = ⌊(S-1)/(N-1)⌋, pr ...
Publicado el 7-3 17:25
Algoritmos para Grillas y Secuencias en Programación Competitiva
Problema 1: Grilla
La solución inicial de 60 puntos utiliza un enfoque ineficiente O(n⁴). La versión óptima mantiene componentes conectados mediante una estructura union-find. Al desplazar una ventana de m×m, solo se actualizan las dos columnas afectadas. Se calcula el área máxima sumando el tamaño de los componentes adyacentes a la ventana.
#i ...
Publicado el 6-28 20:57
Notas de competencia de algoritmos: Implementación en C++
La competencia simulada se llevó a cabo con una duración de tres horas. A cnotinuación, se detallan los puntajes obtenidos para cada problema:
Problema
Puntaje máximo
Puntaje obtenido
A
50
50
B
70
70
C
110
110
D
110
20
E
110
30
El puntaje total fue de 280 de 450 posibles.
Problema A: Sudoku
El problema consiste en validar una ...
Publicado el 6-26 05:07
Compresión de estados en programación dinámica
La compresión de estados consiste en representar múltiples estados como un único valor, comúnmente mediante bits. En problemas que requieren una progresión secuencial, como la programación dinámica convencional, solo se maneja un estado a la vez, lo que resulta insuficiente para escenarios con estados múltiples. Por ello, se emplea la compresió ...
Publicado el 6-24 20:41