¿Qué puedo aprender ahora mismo en 10 minutos que me ayudará a convertirme en un mejor programador competitivo (por ejemplo, un truco de C ++ o un pequeño algoritmo útil)?

1) A veces hay situaciones en las que tiene algún algoritmo que marca elementos / vértices / elementos con valor 0/1, y necesita ejecutarlo varias veces. La razón más común para hacerlo sería porque un problema dado contiene pruebas múltiples. Ejemplo simple: está ejecutando dfs en un gráfico para contar vértices alcanzables. Muchos principiantes simplemente llenarán la matriz usada con 0 en cada iteración, pero puede hacerlo más inteligente: use una matriz de enteros en lugar de una matriz booleana y almacene algún contador global (tal vez simplemente la cantidad de prueba actual) para saber qué valor significa ‘1’ ahora mismo. Ahora puedes hacer todos los cheques de esta manera:

si (usado [v]! = T)

en lugar de

si (usado [v] == 0)

Ahora, en lugar de llenar todo el conjunto con 0, simplemente puede hacer T ++ optim Optimización constante bastante fácil que a veces ayuda mucho.

2) Y otra pista para los concursantes un poco más experimentados. La programación dinámica en un árbol es un tema relativamente popular. Cuando ha implementado una solución, por lo general hay una forma simple y rápida de probarla un poco: intente ejecutarla en un gran gráfico aleatorio mientras selecciona diferentes vértices como raíz de un árbol. Si sabe que la respuesta a un problema no depende de qué vértice se seleccionó como raíz, debe recibir los mismos resultados a pesar del roteoting tree. Ahora, si tiene las mismas respuestas, es natural esperar que no tenga errores graves allí, y que ni siquiera necesite implementar la fuerza bruta; Si tienes respuestas diferentes, significa que deberías buscar algunos errores.

Bueno, la respuesta a esa pregunta depende de lo que ya sabes. Como no tengo idea de eso, simplemente seguiré con esto: https: //codeaccepted.wordpress.c … (“¿ Producir la respuesta en módulo 10 ^ 9 + 7″?)

Una cosa que puedes aprender ahora mismo es que no hay una manera rápida o fácil de ser muy bueno o mejor en algo.

Para llegar a ser bueno en cualquier cosa, necesitas perseverancia. Siga intentando desafíos que están un poco más allá de su nivel de comodidad y eventualmente mejorará.

Advertencia: no soy un programador competitivo, pero estoy seguro de que este consejo es aplicable a casi cualquier campo.