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.

Inscripción miembros UPV Inscripción Institutos
***

¿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.

Capítulo 0

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
Entrar
Capítulo 1

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()
Entrar
Capítulo 2

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
Entrar
Capítulo 3

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
Entrar
Capítulo 4

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
Entrar
Capítulo 5

Estructuras de Datos

  • Estructuras Lineales (LIFO / FIFO): Pilas, Colas y Monotonic Stack
  • Contenedores Asociativos (Búsqueda y Mapeo): set vs unordered_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
Entrar
Capítulo 6

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
Entrar
Capítulo 7

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
Entrar
Capítulo 8

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)
Entrar
Capítulo 9

Programación dinámica

Disponible el 18 de agosto de 2026

Capítulo 10

Geometría

Disponible el 21 de agosto de 2026

Capítulo 11

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.