Bootcamp CP-UPV
Aprende programación, ¡tengas el nivel que tengas!
Aprende programación de una forma dinámica y a tu ritmo, probando a hacer pequeños programas tú mismo y en un ambiente competitivo con otros compañeros.
¿Qué es el Bootcamp CP-UPV?
Es un curso completamente online para aprender programación y algoritmia desde 0, de la forma más dinámica y al ritmo que elija el participante.
La inscripción al curso es totalmente gratuita, no hay límite de plazas y está abierta a todos los interesados; alumnos y profesores de la UPV, institutos u otras universidades, profesionales, curiosos, etc..
Estructura del Bootcamp
El curso está estructurado en capítulos, cada uno cubre un temario de creciente dificultad. Al comienzo de cada capítulo se abrirá un concurso online de programación donde los participantes tendrán que resolver problemas relacionados con el temario; esto permite al participante aprender de primera mano y competir contra el resto de participantes. Desde el momento en el que se abren los concursos los participantes tendrán acceso a los problemas como mínimo hasta el 1 de julio de 2026.
Introducción a la programación competitiva, instalación de software y recomendaciones generales
- ¿Qué es la programación competitiva?
- ¿Qué se aprende en este bootcamp y cómo funciona?
- Instalación de un editor de código y lenguajes de programación
- Cómo usar el juez online
- Plantillas, terminal y ánimos
Tipos de datos, operaciones y entrada/salida
- Tipos comunes en C++: char, int, long long, double
- Variables signed y unsigned
- cin, cout
- Suma, resta, multiplicación, división, módulo
- Overflows
- pow(), sqrt(), log()
Expresiones, control de flujo y arrays/vectores
- Expresiones e instrucciones
- Bloques de control de flujo:
- Bloques 'if', 'else', 'else if', ! (not)
- Dos tipos de bloques 'for'
- Bloques 'while', 'do while'
- Arrays y vectores
- Diferencias entre ellos
- Arrays y vectores bidimensionales
Algoritmos de Búsqueda y "Divide y Vencerás"
- Complejidad de tiempo
- Costes más comunes
- Divide y vencerás
- Algoritmos de búsqueda
- Búsqueda binaria
- Búsqueda binaria en la respuesta
- Búsqueda ternaria
- Algoritmos de Ordenación (Divide y Vencerás)
- Merge Sort
- Quick Sort
- Aplicaciones
- Exponenciación binaria
Recursión
- Definición de recursión: caso base y caso general
- Funcionamiento interno (Call Stack y Stack Overflow)
- Tipos de recursión:
- Recursión Lineal
- Recursión Múltiple
- Recursión de Cola (Tail Recursion) y optimizaciones de compilador
- Coste temporal y espacial en el Call Stack
- El Teorema Maestro en relaciones de recurrencia
Estructuras de Datos
- Estructuras Lineales (LIFO / FIFO): Pilas, Colas y Monotonic Stack
- Contenedores Asociativos (Búsqueda y Mapeo):
setvsunordered_set - Conjuntos Ordenados y Multiset (Uso eficiente de
lower_bound/upper_bound) - Colas de Prioridad (Heaps): Min-Heap y Max-Heap
- Uniones de Conjuntos Disjuntos (DSU / Union-Find) con Path Compression y Union by Size
Teoría de números
- Números Primos, Criba de Eratóstenes y Factorización (SPF)
- Máximo Común Divisor (MCD) y Mínimo Común Múltiplo (MCM)
- Algoritmo de Euclides (Normal y Extendido)
- Aritmética Modular, Exponenciación Rápida e Inverso Modular
- Teorema del Resto Chino (CRT) y Congruencias Lineales
- Función Phi de Euler y Pequeño Teorema de Fermat
Bits
- Representación binaria y operadores a nivel de bit (
&,|,^,~,<<,>>) - Operaciones fundamentales (Bitmasking: encender, apagar, consultar y alternar bits)
- Trucos de bits indispensables en CP (Potencias de 2, LSB, paridad)
- Representación de $2^N$ subconjuntos mediante máscaras de bits
- Funciones intrínsecas del compilador (
__builtin_popcount,clz,ctz) - Estructuras avanzadas: Trie de Bits para consultas de XOR Máximo
Grafos
- Fundamentos, Representaciones en Memoria y Tipos de Grafos
- Algoritmos de Exploración y Búsqueda (BFS, 0-1 BFS, DFS)
- Caminos Mínimos (Dijkstra, Bellman-Ford, Floyd-Warshall)
- Orden Topológico y Algoritmo de Kahn (DAG)
- Árboles de Recubrimiento Mínimo (MST y Algoritmo de Kruskal)
- Componentes Fuertemente Conexas (SCC y Algoritmo de Kosaraju)
- Conceptos Especiales en Árboles (Diámetro y LCA con Binary Lifting)
Programación dinámica
Disponible el 18 de agosto de 2026
Geometría
Disponible el 21 de agosto de 2026
Técnicas avanzadas
Disponible el 25 de agosto de 2026
Más detalles
A través de esta web se puede acceder al temario de cada capítulo y, solo si estás registrado, a la plataforma online que permite evaluar el código que escriban los participantes. Todo el temario y los problemas que los participantes tendrán que resolver están escritos por los organizadores de Competitive Programming UPV que ayudarán en todo momento a los participantes con sus dudas a través del email competitiveprogrammingupv@gmail.com o preferiblemente por la comunidad de WhatsApp del grupo.