TL; DR: No debería, pero lo hará.
Miremos esta pregunta desde una perspectiva diferente. ¿Cuáles son las consecuencias de ampliar el conocimiento requerido para la programación competitiva (CP).
- Hay más libertad para los creadores de problemas al crear problemas.
- La curva de aprendizaje es más pronunciada para los competidores. Simplemente hay más cosas que aprender para desbloquear todo su potencial. Esto también significa que el CP es menos accesible para los principiantes (algo malo para la popularidad).
- El conocimiento algorítmico avanzado de CP ya es una especialización tan estrecha que la mayor parte es un desperdicio. Las habilidades de resolución de problemas adquiridas, por otro lado, son realmente invaluables fuera de la PC. Mientras más tiempo tenga para invertir en el aprendizaje, menos tiempo tendrá para practicar sus habilidades para resolver problemas.
- Algunas de las técnicas pueden crear más diversidad en los problemas y posibles enfoques al resolverlos. Por lo tanto, mejorar la experiencia de resolución de problemas.
- Muchos de los algoritmos más avanzados requieren una implementación más larga o, como alternativa, la inclusión de una biblioteca preescrita. Ambos no son deseados.
- Muchas de las técnicas avanzadas requeridas son imposibles de resolver por su cuenta, lo cual es un gran problema en caso de que dicha técnica sea absolutamente necesaria para resolver el problema (y al mismo tiempo, saber que hace que el problema sea trivial).
Hay pocos más, pero esa lista ya es lo suficientemente larga. Analicemos esta lista desde el punto de vista de la competencia. Como el n. ° 1 nos afecta solo indirectamente, lo dejaré fuera por ahora. Solo el # 4 es claramente positivo, los otros puntos hacen que nuestra experiencia sea más tediosa y (para la mayoría de nosotros) menos divertida. Para resumir las cosas: si se agrega un nuevo elemento a nuestro vocabulario cada vez mayor de algoritmos / teoremas / técnicas, y no está justificado por el n. ° 4, es una mala decisión. En términos de diseño del juego, aumenta la complejidad sin aumentar la profundidad.
- ¿Está bien mi implementación de Búsqueda ternaria?
- ¿Cuál es la mejor manera de extrapolar una señal dispersa que proviene de un filtro de Kalman?
- Cómo encontrar la solución más óptima para una pregunta en particular que se ha enviado en LeetCode
- ¿Qué es una explicación intuitiva de IDA * (profundización iterativa A *)?
- ¿Cómo podemos resolver el problema mencionado a continuación?
Entonces, dado que esto es tan malo para los competidores, ¿por qué sucede? # 1 es la única razón. Cada nueva semana, se crean docenas (o incluso cientos) de nuevos problemas. Cada creador de problemas quiere crear un problema original y desafiante. Es mucho más fácil lograr esto, cuando no tiene que restringir sus problemas a ciertos dominios. Los problemas nuevos a menudo se inspiran en los antiguos, por lo que cuando un nuevo algoritmo llega a CP, la probabilidad de repetir un problema que lo requiere es mucho mayor. Después de algunos casos, muchas personas (especialmente las de arriba) lo considerarán una técnica estándar para la PC.
Solo se necesita un hombre para introducir una nueva técnica para CP. Se necesita toda la comunidad para detenerlo. Entonces, incluso si introducir cosas nuevas es generalmente malo para la comunidad CP, realmente no podemos hacer nada al respecto.