QUE NO IMPORTA REALMENTE QUIENES SOMOS SOLAMENTE LO QUE PUEDES SER: –
(1) Puedes tener éxito en cualquier cosa si luchas mucho, incluso si eres promedio.
APRENDER TÉCNICA NO HERRAMIENTAS: –
(2) Los lenguajes de programación, las herramientas y las metodologías van y vienen. Es por eso que vale la pena obtener la mayor experiencia posible con la mayor cantidad de idiomas y marcos posibles. Centrarse en los fundamentos de la programación, porque los conceptos básicos nunca cambian; Presta más atención a la arquitectura que a la programación. Si te sientes seguro de que solo hay una forma correcta de hacer algo, es probable que sea el momento de una revisión de la realidad. El dogma puede obstaculizar tu capacidad para aprender cosas nuevas y hacer que te adaptes lentamente al cambio.
TODOS COMENZAN CON 0 PARA ALCANZAR 1: –
(3) ¡Olvídate de la gente que dice que no puedes hacerlo! ¡Son simplemente celosos porque lo vas a conseguir! Desearían tener el mismo impulso y la misma pasión que tú.
SI CREE QUE NO ESTÁ EN EL IIT O EN LA LUNA, NO PODRÁ HACER ALGO QUE ESTÁ INCORRECTO:
(4) NO. LA EDUCACIÓN EN LA SALA DE CLASES NO ES NECESARIA PARA SER EXITOSO. PERO LA EDUCACIÓN EN EL CAMPO QUE USTED ESTÁ TRATANDO PARA EL ÉXITO SE NECESITA.
EMPEZAMOS LA PROGRAMACIÓN COMPETITIVA.

¿Qué idioma debes elegir?
- C ++ – ¡Muy recomendable! Es muy rápido. La implementación de diferentes algoritmos lleva poco tiempo debido a STL. C ++ es aceptado en todas las competiciones. Lo he estado usando desde mi primera línea de código.
- C – Ve y aprende C ++ debido a STL. Si tiene conocimiento de C, también está listo para codificar en C ++.
- JAVA – Es lento. Pero tiene una clase Big Integer, incluso si hay muy pocos problemas que requieren su uso. Si el límite de tiempo es ajustado, obtendrá el límite de tiempo excedido. Java no es aceptado en todas las competiciones.
¿Dónde puedes practicar?
Recomiendo Sphere Online Judge (SPOJ). Es eficaz en términos de calidad y cantidad. Los editoriales y las soluciones están disponibles en línea si te quedas atascado al resolver problemas. Soporte de sitios web SPOJ Toolkit y clasificador de problemas para SPOJ.pl.
En primer lugar, tienes que dominar lo básico.
Una vez que se haya acostumbrado a la sintaxis del idioma, es hora de resolver algunos problemas. Comience con los simples que requieren habilidades de implementación. En esta etapa, su objetivo es definir su estilo de codificación. Tal vez te gusta escribir con muchos espacios, tal vez no. Tal vez ponga las llaves en la misma línea con la declaración ‘if’, tal vez no

Y tenga en cuenta estos dos principios mientras desarrolla su estilo de codificación.
- Fácil de implementar. Debe sentirse cómodo implementando la solución que se le ocurrió. ¿Por qué? Porque durante la competencia, lo último que quieres que pase es perderse en tu código. Siempre es mejor pensar 5 minutos más sobre la implementación en lugar de dedicar 10 minutos más a hacerlo.
- Fácil de leer. Esto significa “Fácil de depurar”. Seamos realistas, ambos sabemos que los errores aparecen todo el tiempo. ¿Conoces ese sentimiento cuando te quedan 10 minutos y no encuentras ese maldito bicho? Si tu puedes. Para resolverlo hay que escribir código legible. Por lo tanto, cuando comience a depurar, el código se sentirá natural y fácil de seguir.
¿Cómo aumentar sus habilidades de implementación?
Practica, practica y más practica. Te recomiendo que trabajes los primeros 250 problemas más resueltos en SPOJ. Resuélvelos en ese orden exacto. Y piensa en la solución durante al menos una hora.
No digas ‘Este problema es demasiado difícil para mí, intentaré el siguiente’. Esa es la mentalidad de perdedor.
Toma un pedazo de papel y un lápiz y trata de pensar. De esta manera, es probable que encuentre la solución, pero seguro que desarrollará el pensamiento algorítmico. Si no encuentra la solución en una hora, puede consultar el foro o los editoriales para ver la solución.
¿Los resultados de este enfoque? Implementación rápida. Y aprendiendo problemas y algoritmos clásicos.
En segundo lugar, tienes que dominar los algoritmos y las estructuras de datos.
Seguir un enfoque jerárquico. ¿Empezaste a correr sin saber caminar? No. ¿Puedes construir un rascacielos sin una base sólida? De nuevo, no.

Comience con algoritmos fundamentales y estructuras de datos.
Es difícil empezar. Probablemente porque no sabes qué aprender primero. Así que ve por ese curso, el mejor curso de video sobre estructuras de datos y algoritmos.
Si trabajas problemas fáciles, nunca serás mejor.
La forma más efectiva de encontrar lo que no sabes es encontrarlo. Es lo que me pasó. Aprendí muchas técnicas nuevas, de las que nunca antes había oído hablar, al elegir un problema difícil.
De cada 3 problemas que resuelves, uno debería enseñarte algo nuevo. Si no, elíjalos con más cuidado. Elige problemas más difíciles!
Después de terminar esos 250 problemas de SPOJ, tendrá una visión general de los temas principales de la programación competitiva. Al comprender profundamente la lógica detrás de los algoritmos básicos, los algoritmos de alto nivel parecerán fáciles de entender. Para que pueda aprovechar rápidamente su conocimiento.
Aquí hay un gran recurso con los 10 principales algoritmos y estructuras de datos en cada tema. Después de esos 250 problemas de SPOJ, conocerá muchos de esa lista. Pero todavía hay muchos de los que nunca has oído hablar. Así que empieza a aprenderlos en orden ascendente.

Recomiendo que después de aprender un nuevo algoritmo para practicar 2–3 problemas al usarlo. Busque la etiqueta del algoritmo en SPOJ y encontrará problemas que lo requieren. Trabaja antes de cualquier otra cosa.

Desde mi experiencia, en cada concurso hay al menos un problema de programación dinámica. Muchas personas tienen dolor de cabeza cuando escuchan DP porque no lo entienden.
Y es una buena cosa. Porque si realmente entiendes DP, ganarás.
Me gusta DP, es mi tema favorito. Y aquí está el secreto de DP: piense globalmente óptimo, no solo localmente. Debe dividir el problema en subproblemas más simples, resolviendo cada uno de ellos solo una vez, y construyendo la solución combinando estos subproblemas resueltos. Lo contrario de DP es un algoritmo codicioso porque este último elige la opción óptima localmente en cada paso. Y las opciones óptimas a nivel local pueden resultar en una mala solución global.
Al aprender nuevos conceptos, consulte los tutoriales de TopCoder. Son muy detallados y fáciles de seguir. Realmente he entendido los árboles indexados binarios desde allí.
Trabaja duro.
¿Alguna vez has oído hablar de atletas que ganan los Juegos Olímpicos sin años de práctica? Yo no tengo
Cada año, la preparación para la Olimpiada de Computación comenzó en septiembre y terminó en abril.
Todos los días en estos 8 meses estuve practicando 5 horas.
Y sí, pasé estas 5 horas simplemente resolviendo problemas algorítmicos. Recuerdo los días en que pasé 8 o 10 horas practicando. ¿Por qué? Porque me apasionaba eso. Todos los días, después de regresar a casa de la escuela, fui directamente a mi habitación y comencé a resolver un nuevo problema. O aprender un nuevo algoritmo requerido para ese problema.
Si quieres ganar, debes hacer lo mismo. Toma un problema y quédate con él. Piénsalo durante tu rutina diaria. Como en tu camino al supermercado, o mientras conduces.
¿Sabes que mientras duermes, tu cerebro está desfragmentando la información recopilada en ese día? Es como poner los libros en orden alfabético en una estantería. Básicamente, tu cerebro piensa en diferentes problemas que has encontrado.
Aquí es cómo puedes aprovechar esto. Antes de irse a dormir, lea un problema difícil y tenga en cuenta lo que requiere. En este punto, no tienes que encontrar la solución. Luego te vas a dormir y tu mecanismo cerebral comienza a procesar ese problema. Cuando despiertes te sorprenderás: has encontrado la solución mientras dormías.
Pruébalo por ti mismo. Se siente como magia.
Trabajo inteligente.
Este es el secreto para triunfar. Necesitas objetivos.
Somos humanos y nos gusta posponer las cosas. Esto significa posponer las cosas que debes hacer en este momento. Siempre es más práctico observar Netflix en lugar de trabajar con problemas de DP. Lo sabes, y necesitas arreglar eso.
¿Cómo se puede vencer la dilación?
Asumiendo objetivos. Siempre encontrará problemas interesantes, desde donde puede aprender algo nuevo (consulte los recursos que le proporcioné anteriormente). Pero esos problemas deben ser resueltos, no solo leídos.
Así que aquí es cómo superé la dilación. Hice un calendario en papel y lo llené con los problemas que quería resolver cada día. Y siempre me he llenado de problemas con dos días de anticipación, así que supe cómo administrar mi tiempo en los días siguientes.
De esta manera, siempre me sentí motivado a terminar los problemas y encontrar otros nuevos para llenar el calendario en los próximos días. Es una sensación gratificante cortar los problemas cuando los resuelves. Yo también te conozco así.
Haga su propio calendario de papel. No hagas otra lista de verificación en tu teléfono, que no te importará mañana.
¿Cómo depurar efectivamente?
¿Quieres convertirte en un profesional? Si es así, necesitas ‘depurar en tu mente’.
Es, con mucho, la técnica de depuración más eficiente que conozco porque no requiere ningún depurador. Tu cerebro explora múltiples rutas de código al mismo tiempo y te da una perspectiva mucho más amplia del código, en comparación con el depurador clásico
.
Es similar a la habilidad de los grandes maestros para jugar al ajedrez y pensar 3 movimientos por adelantado.
Utilizo esta técnica exclusivamente como mi primera línea de defensa, seguido de un depurador real en la última instancia.
Para aprender a ‘depurar en tu mente’ necesitas practicar. Cuando envía un problema y recibe “Respuesta incorrecta”, no vaya directamente al botón del depurador. En su lugar, comience a leer el código y piense ‘¿Qué sucede en esta línea?’, ‘¿Cómo afecta esta instrucción’ si ‘al programa?’, ‘Cuando sale del bucle, ¿cuál es el valor del iterador?’.
De esta manera piensas por tu cuenta. Con el tiempo, comenzará a depurar en tiempo real a medida que escribe el código.
Gracias señor Quora, señor por inspirarme.
- No esperes a que las cosas sucedan, haz que sucedan las cosas.
- Siempre hace un gran trabajo, no se detenga después de algunas carreras.
- Se acabaron los días en que haces algo increíble y esperas a que la gente te note, EMPUJA tu trabajo al público a través de varios canales. Las redes sociales han hecho esto muy fácil para todos.
- Si tropiezas, hazlo parte del baile. No se desanime.
Aún no tengo éxito, ni siquiera cerca, a millones de millas de mis metas, pero sé que mi nombre finalmente estará en boca de todos en algún momento y habré agregado valores a millones de vidas porque comencé bien RECOGIENDO A MI MISMO .
Nadie te va a escoger. Elige tú mismo. – Seth Godin