¿Cuáles son algunas preguntas asombrosas de CodeChef con soluciones comprensibles que me ayudarán a aprender nuevos métodos y conceptos?

A2A

Hola

Probablemente hay muchas preguntas que caerán en la categoría especificada en la pregunta. Aquí hay una lista de 10 preguntas que deberían ayudarlo a aprender algo nuevo si aún no conoce estos conceptos:

Fin del mundo: requiere que uses una técnica que encuentre eficientemente los no primos ~ Tamiz de Eratóstenes

Comencé a aprender programación dinámica a partir de estas dos preguntas:
Salvar a la princesa
Magic Rankings – Un problema DP muy estándar – Programación dinámica | Conjunto 6 (Ruta de coste mínimo) – GeeksforGeeks

Superpoderes de 2: lo ayuda a comprender cómo calcular x ^ y módulo z de manera eficiente utilizando el enfoque de división y conquista

Magic Trick: utiliza el mismo enfoque Divide and Conquer, pero esta vez para multiplicar dos números y tomar el módulo del resultado de manera eficiente (porque no puedes multiplicar directamente los no, el resultado se desbordará)

Recetas de Granama: esta pregunta no tiene nada de especial, pero si eres un novato, definitivamente aprenderás un nuevo truco para calcular las frecuencias en el tiempo O (n) para evitar que escribas la ingenua solución O (n ^ 2)

Reinado: una pregunta básica para aplicar el algoritmo de Kadane
Asistente de Postre – “”
Subarray contiguo de suma más grande – GeeksforGeeks

Matchsticks: lo ayuda a comprender los árboles de segmentos, que es un tema muy estándar y popular en la programación competitiva
Árbol de segmentos | Conjunto 1 (Suma del rango dado) – GeeksforGeeks
Árbol de segmentos | Conjunto 2 (Consulta mínima de rango) – GeeksforGeeks

Juego de jardín: una gran pregunta para aprender y aplicar la factorización en tiempo O (sqrt (n))

Hay muchas más preguntas que se pueden agregar a la lista. Editaré la respuesta si encuentro más preguntas de este tipo.

Espero que esto te ayude a comenzar. 🙂

¡Buena suerte!
Happy Coding 😀

Uno de mis favoritos.

Encuentra la submatriz de suma máxima de una matriz.
Veamos qué se espera de la entrada dada,

Caso 1:
Entrada:
{3, -1, -1, -1, -1, -1, 2, 0, 0, 0}
Salida:
índice de inicio: 0
Índice final: 0
Suma: 3

Caso 2:
Entrada:
{-1, 3, -5, 4, 6, -1, 2, -7, 13, -3}
Salida:
índice de inicio: 3
Índice final: 8
Suma: 17

Caso 3:
Entrada:
{-2, -3,4, -1, -2,1,5, -3}
Salida:
índice de inicio: 2
Índice final: 6
Suma: 7

Encuentre la solución en O (n) complejidad de tiempo.

Solución:

Algoritmo para la solución O (n) usando el algoritmo de Kadane:

Inicialice startIndex y endIndex a 0 y maxSum a arr [0].
Agregue los números uno por uno y póngalos en la variable tempSum.
Si el valor tempSum es mayor que 0, continúe agregando elementos; de lo contrario, reinicialice tempSum a 0.

Actualice startIndex, endIndex y maxSum cuando tempSum sea menor o igual a 0 porque hasta este punto se encuentra el valor máximo de tempSum.

Ahora, continúe hasta que encuentre tempSum mayor que maxSum y una vez que lo encuentre, actualice maxSum, startIndex y endIndex.

Consulte el siguiente enlace para obtener una explicación detallada del programa:
Dada una matriz, encuentre el subconjunto contiguo de suma más grande utilizando el algoritmo de Kadane.