Formar el palíndromo más corto anteponiendo caracteres
Dada una cadena s, el objetivo es enteponer el menor número posible de caracteres para que el resultado sea un palíndromo. La clave está en hallar el prefijo palindrómico más largo de s: si ese prefijo tiene longitud L, basta con tomar el resto s[L…n-1], invertirlo y colocarlo al principio.
Solución con la función prefijo (estilo KMP)
Sea rev l ...
Publicado el 8-4 05:35
Algoritmos de búsqueda de subcadenas: Fuerza Bruta y KMP
La búsqueda de cadenas es un proceso fundamental en computación que consiste en localizar la posición inicial de una cadena secundaria (llamada patrón) dentro de una cadena principal (llamada texto). Si el patrón existe, se devuelve su índice inicial; de lo contrario, se retorna un valor negativo, usualmente -1.
Algoritmo de Fuerza Bruta (Brute ...
Publicado el 7-21 18:46
Técnicas de Manipulación de Cadenas en C++
Inversión de Cadenas
Para invertir una cadena de caracteres en C++, se puede utilizar un enfoque de punteros dobles. El siguiente código muestra una implementación que intercambia los elementos desde los extremos hacia el centro.
void invertirCadena(vector<char>& cadena) {
int inicio = 0;
int fin = cadena.size() - 1;
while ...
Publicado el 7-16 11:37
Técnicas Esenciales en Programación Competitiva: Algoritmos y Estructuras de Datos
Esta guía compila una serie de algoritmos y estructuras de datos fundamentales, categorizados para facilitar su consulta y aplicación en problemas de programación.
Estrategias Algorítmicas Comunes
Programación Dinámica (DP)
Algoritmos Voraces (Greedy)
Búsqueda Binaria
El corazón de estos métodos reside en la identificación de patrones y la ob ...
Publicado el 7-13 00:06
Algoritmos de Alta Precisión y KMP: Estudio y Implementación
Significado de los Algoritmos de Alta Precisión
En C++, los tipos de datos convencionales tienen límites inherentes para almacenar números. Por ejemplo, el valor máximo de un int es (2^31)-1 = 2147483647, y en el caso de unsigned int, el rango es de 0 a 4294967295. Incluso con long long, el rango es limiatdo de -9223372036854775808 a 9223372036 ...
Publicado el 7-1 01:54
Análisis y Resolución de Problemas en Competencias de Algoritmos
Problema A: Navegación en Grafos Dirigidos
El desafío consiste en identificar, para cada nodo en un grafo dirigido, el índice del nodo con el mayor valor de "atractivo" que sea alcanzable. Cada nodo posee un valor único.
La estrategia óptima implica invertir el grafo original. Al construir un grafo con aristas en sentido contrario, po ...
Publicado el 6-21 05:01
Análisis técnico del problema Binary String (EC Final 2022)
El problema P9717 de la EC Final 2022 plantea una transformación en una cadena binaria circular donde cada ocurrenica simultánea del patrón 01 se convierte en 10. El objetivo es determinar el número total de estados únicos alcanzables a partir de una configuración inicial dada.
Modelo de Partículas y Estados
La transformación 01 → 10 puede inte ...
Publicado el 6-5 23:59