¿Qué debo hacer si tengo dificultades con la programación dinámica en SPOJ?

¿Comenzaste DP hace 3 días? .. Está bien si tienes dificultades con DP al principio. ¿Qué quiere decir con “pensar en una solución del 60-70%”? Eso suena bien. Como si tuvieras alguna idea sobre la solución, simplemente no puedes armar todo.

“Sí, podría haber hecho eso”, ¡eso es genial! Cuando comprende una solución y se da cuenta de que tenía que resolverla usted mismo, de hecho, significa que está muy cerca de resolver un problema similar la próxima vez. Es mucho mejor que “Maldición, este editorial es tan difícil de entender …”.

Ketan Gupta compartió algunos problemas fáciles en su respuesta; Si los problemas SPOJ son demasiado difíciles para usted en este momento, ¿tal vez debería pasar a algunos problemas más simples? Pruebe CodeChef o Codeforces, le proporcionan tareas más fáciles. Check Problemset – Codeforces – para mí, los problemas en la parte superior suenan mucho más simples que las preguntas DP en SPOJ.

También puede buscar algunas listas de problemas ordenados por tema y desarrollar sus habilidades paso a paso. Después de aprender bitmask DP: resuelva varios problemas de DP de máscara de bits, después de aprender DP en un árbol, resuelva algunos problemas de DP en un árbol. Consulte esta lista: Programación del campamento de programación; También hay un buen tema sobre DP en Codeforces: Tipo de programación dinámica – Codeforces. Tal vez ahora sea demasiado difícil para usted: no se preocupe, trabaje en tareas fáciles durante algún tiempo y estará listo para temas avanzados más adelante.

Recuerdo cuando estaba preparando DP para INOI. Me chupó en DP. Ni siquiera pude resolver el más fácil de los problemas.
Entonces decidí cambiar las cosas.
Comencé a resolver problemas en este orden en TIMUS:
Timus Online Judge
No pude resolver las dos primeras preguntas y tuve que buscar en google. Pero finalmente encontré la técnica. ¡Encuentra la recursividad, observa los subproblemas que se repiten y memoriza!
Resolví alrededor de 10-15 problemas, e inmediatamente aprendí fluidez en DP. Entonces resolví algunos problemas en Codechef y en SPOJ.
Algunos problemas que encontré fáciles y bastante agradables para aclarar mis conceptos básicos:

Conjunto de problemas 1
1) compras en línea
2) Spiderman y saltos

Soluciones
SPIDY2: [C ++] #include usando el espacio de nombres std; typedef largo largo ll; typ – Pastebin.com
CUPÓN: [C ++] #incluye
usando el espacio de nombres std; typedef largo largo ll; typ – Pastebin.com

Conjunto de problemas 2
1) SPOJ.com – Problema GNYR09F
2) SPOJ.com – Problema PERMUT1
3) SPOJ.com – Problema SQRBR
4) SPOJ.com – Problema JEDNAKOS
5) Problema – C – Fuerzas de código

Soluciones
1) GNYR09F: [C ++] #include usando el espacio de nombres std; typedef largo largo ll; typ – Pastebin.com
2) PERMUT1: [C ++] #include
usando el espacio de nombres std; typedef largo largo ll; typ – Pastebin.com
3) SQRBR: [C ++] #include
usando el espacio de nombres std; typedef largo largo ll; typ – Pastebin.com
4) JEDNAKOS: [C ++] #include
usando el espacio de nombres std; typedef largo largo ll; typ – Pastebin.com
5) George y Job: [C ++] #include
usando el espacio de nombres std; typedef largo largo ll; typ – Pastebin.com

Conjunto de problemas 3
1) SPOJ.com – Problema FARIDA
2) monedas de oro de Byteland
3) SPOJ.com – Problema BEHAPPY
4) http://community.topcoder.com/stat…
5) Asistente de postre
6) Chef y ranas
7) SPOJ.com – Problema EDIST
8) SPOJ.com – Problema WACHOVIA
9) Problema – A – Fuerzas de código

Soluciones:
1) FARIDA: [C ++] #include usando el espacio de nombres std; int t; vector D – Pastebin.com
2) MONEDAS: [C ++] #include #include #include #include – Pastebin.com
3) BEHAPPY: [C ++] #include usando el espacio de nombres std; typedef largo largo ll; escrito – Pastebin.com
4) ZigZag: [C ++] #include #include #include #include – Pastebin.com
5) DELISH: [C ++] #include #include usando el espacio de nombres std; escrito – Pastebin.com
6) FROGV: página en codechef.com
7) EDIST: [C ++] #include
usando el espacio de nombres std; largo largo DP [2006] [2006]; int – Pastebin.com
8) WACHOVIA: [C ++] #include
#include usando el espacio de nombres std; escrito – Pastebin.com
9) Aburrimiento: [C ++] #include #include #include #include

Gracias a Sameer Gulati por compartir estos problemas.

Siga el procedimiento mientras diseña cualquier algoritmo:
1. Recursión: escriba una fórmula recursiva, incluso si es exponencial.
2. Orden: vea si cambiar el orden de recursión puede mejorar la solución.
3. Almacenar: descubra el subconjunto que se volverá a calcular una y otra vez, almacénelo.
Puedes probar lo mismo con un simple problema factorial, ¡funciona!
Cualquiera que sea el proceso mencionado anteriormente, aprendí del profesor Sundar Vishwanathan, departamento de IIT-B Comp Sc, durante el curso CS-601.
Para más detalles, puede consultar la sección de DP del siguiente curso de Stanford
CS 97SI: Introducción a los concursos de programación competitiva
y el libro de Kleinberg es el mejor para aprender DP.

Recomiendo que revise los conceptos nuevamente y practique tantos problemas como pueda. Consulte Sitios como Geeks4Geeks, CodeChef, HackerEarth u otro Juez en línea donde puede obtener soluciones a más de estos problemas. Cuanto más resuelvas, mejor serás.

Buena suerte.