Está en la página 1de 5

Preparacin para la ACM ICPC

Autores: Joaqun Planells Lerma, Sergio Garca Barea, Mario Rodrguez Molins
Introduccin
La ACM ICPC [1] es una competicin internacional de programacin por equipos que se celebra todos
los aos en la que compiten estudiantes universitarios de todo el mundo. e organi!an "ases regionales de
clasi"icacin #en nuestro caso la $%&C [']( ) los me*ores equipos de cada regin compiten en la "ase
"inal.
%n la p+gina de alvador %spaa [,] se puede leer una breve e-plicacin sobre la competicin ) el
resultado que obtuvo el equipo de la .acultad de In"orm+tica /ace unos aos.
Ediciones anteriores
0ue nosotros sepamos la 1P2 slo /a participado durante los 3ltimos , aos en la $%&C ) estos son
los resultados obtenidos4
'55,6'557 4 %l equipo UPV Valencia Penguins consigui resolver 1 problema ) qued en el
puesto '' de 8' equipos participantes. [7]
'5576'5584 %l equipo FIUPV Valencia Penguins acab con 1 problema resuelto en el puesto ,9
de 8: partipantes. [8]
'5586'5594 Participan ' equipos de la 1niversidad; puesto '< ) , problemas resueltos para el
UPV-EI de la %scuela de In"orm+tica ) puesto 7: para UPV-FI de la .acultad de In"orm+tica.
Participaban un total de 88 equipos. [9]
Preparacin
La me*or manera de entrenar para esta competicin es resolver muc/os problemas del mismo tipo que los
que ponen en el concurso. =ambi>n es necesario conocer mu) bien la sinta-is ) el "uncionamiento del
lengua*e de programacin que utilicemos #C; C?? o @A2A(. La 3nicas librerias que se permiten son las
est+ndar que acompaan a los compiladores. %s importante conocer los distintos tipos de problemas que
se presentan ) esto se consigue con la pr+ctica. A menudo suelen aparecer problemas de los siguientes
tipos4
Matem+ticos4 Calculos num>ricos
Aritm>tica con n3meros grandes
A3meros primos
Aritm>tica modular
=eorBa de n3meros
Ctros #.ibonacci; Doldbac/...(
=eorBa de gra"os
d"s; b"s
E3squeda del camino mBnimo
Frbol de recubrimiento mBnimo
AetGorH .loG
Crdenacin topolgica
DeometrBa
LBneas; rectas; circum"erencias... etc
%nvoltura conve-a
Programacin din+mica
Algoritmos voraces
imulacin4 Problemas en los que simplemente /a) que seguir una series de reglas indicadas en el
enunciado. %*4 Iirigir un robot por un mapa siguiendo las rdenes escritas en un "ic/ero.
Combinatoria4 Calcular el n3mero de combinaciones de un con*unto; muc/as veces se pueden
resolver con programacin din+mica.
&ecurrencias
Coe"icientes binomiales
Crdenacin4 Crdenar una serie de elementos comple*os #por e*emplo ele"antes(
Problemas de entradaJsalida4 La 3nica complicacin es tratar con la entrada o la salida del
problema. Por e*emplo dibu*ar letras con asteriscos
Pginas con problemas
Los dos principales sitios para practicar son la p+gina de 1A Computing Cl)mpiad #1ACC [:]( ) el
Problem et Arc/ive de la 1niversidad de 2alladolid #1va [K](.
La 1ACC tiene una gran cantidad de problemas ordenados #m+s o menos( por su di"icultad. Para
acceder a nuevas secciones de problemas /a) que resolver las anteriores. Las secciones suelen venir
acompaadas de alg3n te-to introductorio sobre algoritmos que es interesante leer. Los problemas de esta
p+gina son en general sencillos de entender; est+n bien de"inidos en su enunciado ) no tienen trampas.
La p+gina de la 12a tiene m+s de mil de problemas del mismo tipo que los que ponen en la $%&C. e
puede acceder a todos los enunciados desde el principio #no /a) LseccionesL como en 1ACC( ) no /a)
ninguna clasi"icacin para los problemas; los m+s sencillos est+n me!clados con los m+s di"Bciles. Los
problemas de esta p+gina /a) que leerlos mu) atentamente para descubrir todos los detalles ) las posibles
trampas en el enunciado.
Ctra p+gina interesante es =/e '555Ms ACM6ICPC Live Arc/ive Around t/e $orld [<]. Pertenece tambi>n
a la 1niversidad de 2alladolid ) tiene una base de datos con los problemas que /an aparecido en el ACM
ICPC durante los 3ltimos aos.=iene cientos de problemas de todas las "ases clasi"icatorias del mundo )
tambi>n de las "ases "inales. Lamentablemente esta p+gina no tiene solucin para muc/os de los
problemas que contiene por lo que no es tan 3til como las otras dos para practicar.
Concursos de programacin
Las universidades de los equipos me*or clasi"icados en la ACM ICPC se involucran ) es"uer!an en la
seleccin de los estudiantes que les van a representar. Por e*emplo; la 1niversitat PolitNcnica de
Catalun)a [15]; la 1niversidad Polit>cnica de Madrid [11] o la la 1niversidad Autnoma de Madrid [1'];
todas ellas muc/o me*or clasi"icadas que la 1P2; tienen asignaturas de libre eleccin para la "ormacin
de sus equipos ) organi!an concursos individuales para elegir a los representantes.
La 1niversidad de 2alladolid; a parte de organi!ar su propia "ase local; mantiene una p+gina [1,] donde
cada pocas semanas se organi!an concursos accesibles para cualquier persona que quiera participar.
La 1ACC tambi>n organi!a competiciones online cada cierto tiempo en esta p+gina [17].
%n la 1P2; el Concurso de algoritmos de la asignatura %IA [18] que se reali!a en la .acultad de
In"orm+tica; aparte de slo ser inaccesible para alumnos de otras carreras; solamente premia la velocidad
de e*ecucin del programa ) no la velocidad de codi"icacion como se requiere en la ACM ICPC.
Cmo practicar
Para conseguir un resultado decente es necesario resolver muc/os problemas #cuantos m+s me*or( )
participar en todos los concursos online que sea posible. e puede alternar la resolucin de problemas de
la 1ACC ) de la 12a. Los problemas de la 1ACC est+n bien para ir me*orando progresivamente pero
uno se puede quedar atascado en un problema ) )a no poder continuar. La 12a en cambio no tiene los
problemas clasi"icados por di"icultad pero podemos utili!ar la utilidad ne-t'solve [19] de Igor
AaverniouH para conseguir un listado apro-imado de los problemas seg3n su di"icultad.
Los concursos online de la 12a normalmente son los s+bados ) se anuncian con antelacin en la Geb del
Contest Oosting ervice.%stas competiciones tienen un /orario "i*o ) suele /aber 8 /oras para resolver
entre 8 ) 15 problemas.
%n la 1ACC sin embargo los concursos son de , /oras pero est+n accesibles durante todo el "in de
semana; el tiempo empie!a a correr en el momento que accedemos a la p+gina con los problemas. %sta
libertad de /orario /ace m+s "+cil participar en esta competicin que en las de la 12A.Adem+s; los
concursos de la 1ACC est+n divididos en , niveles #oro; plata ) bronce(; tienes que quedar en una
buena posicin en tu nivel para que te inviten participar en el siguiente. Los problemas de nivel bronce
son bastante sencillos #problemas de c+lculo; gra"os sencillos; d"s; b"s... etc(; en la divisin plata tenemos
problemas m+s complicados #programacin din+mica; gra"os m+s comple*os( ) por 3ltimo la divisin de
oro que tiene problemas de di"icultad e-trema. e /a creado tambi>n la divisin level1 que tiene
problemas muc/o m+s sencillos orientados a gente que est+ empe!ando a programar.
%s importante participar en todos los concursos que sea posible para asB comprobar la evolucin personal
) ganar e-periencia.
Nuestro entrenamiento
Iesde "inales de agosto que "ormamos el equipo /asta el dBa de la competicin. Auestros entrenamientos
/an consistido en4
%ntrenamiento personal4 Cada miembro del equipo; por su cuenta; resolvBa problemas de la
1ACC o la 12a. %ntre los , /emos resuelto casi ,55 problemas de la 12a ) varias secciones de
la 1ACC. =ambi>n /emos dedicado tiempo en leer libros sobre programacin ) algoritmos cada
uno a su ritmo. Cada miembro /a participado en los concursos que le /a sido posible #entre 8 ) 15
concursos cada uno(.
%ntrenamiento en equipo4 Aos /emos reunido siempre que /emos podido para participar en
concursos online. Ao es "+cil que todos est>n disponibles las /oras que dura la competicin ) a
veces tampoco es sencillo encontrar un sitio para reunirnos ) /acerla. Oemos entrenado en equipo
en unas 8 ocasiones durante , meses.
Estimaciones del tiempo de entrenamiento
Contando 15 semanas de entrenamiento; si /emos quedado unas ' /oras cada semana para entrenar en
equipo ) adem+s /emos reali!ado entre 7 ) K /oras de entrenamiento personal podrBamos decir que cada
miembro /a practicado entre 95 ) 155 /oras para la competicin.
Cada uno /emos participado entre 8 ) 15 competiciones online de 7 /oras de duracin. Aos darBa un
mBnimo de '5 /oras ) un m+-imo de 75 /oras.
AsB; la estimacion del total de /oras de resolucin de problemas ) de participacin en competiciones serBa
de entre K5 ) 175 /oras de preparacin totales.
Consejos a!isos
i nos quedamos atascados en un problema lo primero es no maldecir al *ue! que e*ecuta nuestro
cdigo; tanto la 12a como la 1ACC son p+ginas que llevan aos "uncionando ) es poco
probable que encontremos un "allo en el *ue!. %l problema estar+ en nuestro cdigo con toda
seguridad.
Los ordenadores que *u!gan los problemas suelen tener el sistema operativo Linu- con alguna
versin de DCC; /a) que tener esto en cuenta a la /ora de programar para saber qu> "unciones
podemos usar. Cada p+gina in"orma sobre qu> versiones e-actas de Linu- ) DCC utili!an sus
*ueces.
Oa) que usar las librerBas est+ndar siempre que sea posible #=L o *ava.utils(. Ao suele ser
necesario reimplementar cada ve! las estructuras de datos a no ser que necesitemos muc/a
e"iciencia; pero esto no suele ocurrir.
1tili!ar siempre el algoritmo m+s simple que cono!camos; que sea capa! de resolver el problema
dentro de los lBmites de tiempo. Dastar menos memoria o la velocidad de e*ecucin no se tiene en
cuenta a la /ora de *u!gar; asB que no es recomendable entretenerse optimi!ando al m+-imo un
programa. Las "unciones est+ndar de los lengua*es suelen ser su"icientemente r+pidas para su
utili!acin en estas competiciones; siendo raros los casos en que /a)a que reescribir #por e*emplo
en ensamblador( estas "unciones.
i la "uer!a bruta sirve para resolver un problema dentro de los lBmites de espacio ) tiempo; suele
ser el algoritmo m+s recomendable porque normalmente es el m+s r+pido de escribir.
Ao utili!ar memoria din+mica si es posible. &eservar ) liberar memoria dar+ muc/os m+s
problemas que declarar un simple arra). Cmo en estas competiciones no /a) ning3n premio por
a/orrar memoria es me*or reservar al principio un arra) de un milln de double; que ir /aciendo
llamadas a neG o malloc#(. Aormalmente podremos utili!ar varios ME de memoria en los
programas; pero /a) que tener cuidado con no pasar el lBmite que imponen en la competicin.
Leer el enunciado completamente; anotando el tamao m+-imo de la entrada ) la salida; los datos
relevantes... etc.
Enlaces
[1] ACM ICPC4 /ttp4JJicpc.ba)lor.eduJicpcJ
['] $%&C4 /ttp4JJicpc.ba)lor.eduJicpcJ&egionalsJ$%&C58JIe"ault.asp
[,] P+gina de alvador %spaa4 /ttp4JJGGG.dsic.upv.esJPsespanaJacmJ
[7] &esultados $%&C '55,6'5574 /ttp4JJGGG.pol)tec/nique.eduJicpc'55,JranHing./tml
[8] &esultado $%&C '5576'5584 /ttp4JJGGG.pol)tec/nique.eduJicpc'557J'557JresultsJ
[9] &esultados $%&C '5586'5594 /ttp4JJGGG.pol)tec/nique.eduJicpc'557J'558JranHing./tml
[:] 1ACC4 /ttp4JJace.delos.comJusacogate
[K] 12a Problem et Arc/ive4 /ttp4JJonline6*udge.uva.esJproblemsetJ
[<] =/e '555Ms ACM6ICPC Live Arc/ive Around t/e $orld4 /ttp4JJacmicpc6live6
arc/ive.uva.esJnuevoportalJ
[15] 1niversitat PolitNcnica de Earcelona4 /ttp4JJconcurs.lsi.upc.eduJ
[11] 1niversidad Polit>cnica de Madrid4 /ttp4JJacm.asoc."i.upm.esJcontestJ
[1'] 1niversidad Autnoma de Madrid4 /ttp4JJGGG.ii.uam.esJPsGercJinicio.p/p
[1,] 12a Contest Oosting ervice4 /ttp4JJacm.uva.esJcontestJ
[17] 1ACC Contest Date4 /ttp4JJace.delos.comJioigate
[18] Concurso de algoritmos de la asignatura %IA4
/ttp4JJGGG.dsic.upv.esJasignaturasJ"acultadJedaJconcursoJ
[19] ne-t'solve de Igor AaverniouH4 /ttp4JJGGG.s/)g)ps).comJacmJ