domingo, 27 de noviembre de 2011

Primer paso...

Hola! Este es el primer post y por ello empezaremos con algunos datos básicos que deben saber al empezar a programar problemas de cualquier Online Judge.

He aquí algunas páginas con las que podrán empezar a programar diversidad de problemas Input/Output:

http://uva.onlinejudge.org/

- Una página gran cantidad de problemas por resolver. El blog estará basado, principalmente, por ahora, en el desarrollo de problemas en esta página. (UVA)

http://livearchive.onlinejudge.org/

- Esta página, muy parecida al UVA, tiene los problemas de los regionales y mundiales que se realizan cada año. Sin duda alguna, una buena base para prepararse de cara a las etapas regionales. (ACM-ICPC)

http://uhunt.felix-halim.net/
- Esta página, sin duda alguna, nos servirá mucho en el desarrollo de diferentes problemas del UVA, ya que clasifica gran cantidad de problemas para poder prepararse de cara a las etapas regionales y mundiales. (uHunt)

http://community.topcoder.com/tc
- Adjunto el link de esta página, ya que me han dado buena referencia de ella. Acabo de realizar mi registro, así que más adelante podré comentar sobre esta página, pero sé que es un buen site para entrar en ambiente de competencia. (TC)

Más adelante agregaré otras páginas. La idea es compartir mi conocimiento con ustedes, aún estoy aprendiendo muchas cosas más, pero sí desean algún tema en especial, lo puedo comentar o investigar. Al igual que ustedes, yo estoy en etapa de preparación y por ello, cada cosa nueva e interesante que aprenda la iré poniendo aquí.

Los lenguajes que usaré será C++ en su mayoría y Java para algunos temas puntuales, que se verán mucho más adelante.

Mi usuario, por sí desean ver mi avance en UVA o en las páginas de programción en las que vaya entrando:
- Fraaraco

Bueno, para empezar, créense un usuario en UVA, luego abrirán la págin de uHunt y empezaremos a programar...

En uHunt inserten su usuario de UVA. Al inicio, a menos que hayan programado antes en UVA, verán vacío su ranking de problemas resueltos. Cabe recalcar que es necesario usar Chrome o Safari, ya que en Internet Explorer no corre correctament el uHunt. Abajo, en la página leerán: "Competitive Programming Exercises", seguido de una lista de temas:

2nd Ed's Exercises (switch to 1st Ed)
Book Chapters
1. Introduction
2. Data Structures and Libraries
3. Problem Solving Paradigms
4. Graph
5. Mathematics
6. String Processing
7. (Computational) Geometry
8. More Advanced Topics

Estos son los temas de la 2da versión del libro "Competitive Programming"(si pueden adquirirlo, sería ideal hacerlo!!!). El blog estará basado en la búsqueda de la resolución de los problemas de la 2da versión del libro y algunos en la 1ra versión. Cabe mencionar que no proporcionaré código de un problema, tomaré de ejemplo algunos, pero evitaré dar el código completo de una solución, ya que la idea es que ustedes puedan resolver los problemas por su cuenta. Sufriendo aprenderán más :D!

Bueno, si no se me escapa ningún punto más, empezaré con algo básico que deben saber... Es hora de algo de código xD!

#include

int main() {

    //freopen("in.txt", "rt", stdin);
    //freopen("out.txt", "wt", stdout);
return 0;
}


Al empezar a resolver los problemas del UVA deben saber que no recibe algunas librerías como conio.h o stdafx.h, por lo que eviten usarlas. Para los programadores en Visual C++, deben borrar la librería stdafx.h antes de enviarla a UVA.

¿Qué hace el freopen?
- Bueno, la respuesta es sencilla, el freopen sólo se usa para realizar pruebas al código antes de ser enviado. Primero, se crea un archivo in.txt en la carpeta donde está almacenado el proyecto. Segundo, en este archivo se escribe los datos de entrada que te dan en el problema para poder realizar las pruebas correspondientes al código. Esto evitará tener que usar la consola para entrar los datos. Las impresiones mostradas en el output del problema, aparecerán en el archivo out.txt, sin necesidad que este se cree y se modificará automáticamente.

¿Qué más debo saber antes de empezar?
- Uno debe ser preciso al momento de imprimir el output de un problema, ya que debe ser exacto al output de ejemplo y cumplir con las reglas de impresión que ahí se ven. Asímismo, uno debe siempre realizar un salto de línea al final de la impresión.

¿Por dónde empezar?
- En uHunt, elijan el capítulo 1, luego procedan a desarrollar los problemas Ad Hoc.

Bueno, para ser el mensaje de bienvenida a sido un poco largo, pero a partir de ahora evitaré dar muchas palabras y escribiré los tips que he ido aprendiendo en el desarrollo de diversos problemas.

Nos vemos en el siguiente post, en el que veremos lectura de datos.

Suerte y comenten sí tienen alguna duda!!!

Fredy

No hay comentarios:

Publicar un comentario