Programación competitiva
-
Upload
rodolfo-mercado-gonzales -
Category
Software
-
view
3.196 -
download
1
Transcript of Programación competitiva
RODOLFO MERCADO GONZALES
( Rmg_91 )
PROGRAMACIÓN COMPETITIVA
Consiste en dar soluciones eficientes a un conjunto de
problemas algorítmicos en un determinado tiempo y a través de
un programa hecho en algún lenguaje de programación
permitido ( C, C++, Java, etc ).
¿ Programación competitiva?
¿ Qué temas debo saber?
Es recomendable poseer una
base de lógica y matemática, el
grado de éxito dependerá
mucho de esto.
¿ Qué temas debo aprender?
Teoría de Números.
Recursividad.
Programación Dinámica.
Algoritmos de Búsqueda.
Grafos.
Redes de Flujo.
Geometría Computacional.
Teoría de Juegos.
…
¿ Cómo son los problemas?
Enunciados en la mayoría de casos en inglés, en el cuál se
cuenta el problema, se define que vendrá en el archivo de
entrada y cuál será el resultado esperado en el archivo de
salida.
ARCHIVO
ENTRADA
ALGORITMO
/ CÓDIGO ARCHIVO
DE SALIDA
Ejercicio básico Dado un entero n, imprimir el resultado de la suma de todos
los enteros desde 1 hasta n.
Restricciones: n <= 10^8
Entrada
3
100
Salida
6
5050
¿ Solución 1 ?
int n, i, total;
int main(){
cin >>n;
total=0;
for(i=1; i<=n; i++){
total+=i;
}
cout << total << endl;
}
VAR
i , n , total : enteros
INICIO
leer( n )
total 0
desde i 1 hasta n
total total + i
fin_desde
escribir( total)
FIN
long long n;
int main(){
long long n;
cin>>n;
cout << n*(n+1)/2 << endl;
}
¿ Solución 2 ? VAR
n : entero
INICIO
leer( n )
escribir( n*( n+1) /2 )
FIN
AC ( accepted ) – Tu programa esta bien :D
WA ( wrong answer) – Tu programa da una respuesta
incorrecta.
TLE ( time limit exceeded ) – Tu programa tarda mucho
tiempo.
¿Mi solución es correcta?
De acuerdo a nuestra solución
brindada para un problema, se nos
asignará una calificación, como
por ejemplo:
¿ La participación es en equipos?
Existen competencias donde la participación es individual y
también otras en la que la participación es en equipos de
hasta máximo 3 personas.
Concursos Individuales
Concursos en Equipos
ACM - ICPC
El ACM ICPC es una competición anual de programación
entre universidades de todo el mundo patrocinada por IBM.
(Equipos de 3 integrantes y 1 coach).
Consta de 2 fases:
- Regional (Argentina , Perú , Bolivia, Chile, Uruguay y
Paraguay )
- World Final ( clasificados de las regionales)
Es el evento más grande, prestigioso y antiguo de las competencias de
Programación en el mundo
3 CUPOS!!
IEEEXTREME
IEEEXtreme es un desafío global en el que equipos de 3
estudiantes miembros IEEE, asesorado y supervisado por un
proctor (miembro IEEE), compiten entre sí en un lapso de 24
horas ininterrumpidas para resolver una serie de problemas de
programación.
Beneficios de Competir
- Capacitación avanzada en algoritmos.
- Participación en campamentos de programación.
- Empresas como Google , Facebook , Microsoft buscan
programadores con el perfil formado en estas competencias
( pasantías)
- Pueden ganar muchos premios de acuerdo a los concursos
( polos, maletines, dispositivos electrónicos, dinero efectivo,
pasantías, viajes, etc ).
¿Cómo entrenar?
Estudiar la teoría de libros y artículos en internet
-Introduction to algorithms / Thomas H. Cormen
-Tutoriales de Topcoder, Codeforces y Codechef.
Resolver problemas de Jueces Online( repositorios )
SPOJ, UVA , TJU , TIMUS , PKU, Codechef ,
Codeforces, Topcoder.
Participar en Campamentos de Programación ( UNI,
Arequipa, Argentina, Brasil ).
¿Cómo saber mi progreso? Participar en concursos individuales semanales , los cuales se dan
online y te permite tener un rating y/o color que representa el
nivel en que estás. Cada uno de estos sitios tiene un ranking.
www.topcoder.com/tc
www.codeforces.com
www.codechef.com
Good luck and have fun!!!