837. New 21 Game
Descripción del problema: Alice empieza con 0 puntos y saca números aleatorios mientras su total sea menor que k. En cada extracción añade un entero uniformemente elegido entre 1 y maxPts. Alice deja de sacar cuando su puntaje alcanza o supera k. Se pide la probabilidad de que al finalizar Alice tenga como máximo n puntos.
Reglas resumidas: empezar en 0 puntos, cada carta aporta un valor entre 1 y maxPts con probabilidad uniforme, se siguen sacando cartas mientras el total sea menor que k, se detiene al alcanzar o superar k, y se desea la probabilidad de terminar con un total menor o igual a n.
Ejemplo 1: Input n = 10, k = 1, maxPts = 10. Output 1.00000. Explicación: Alice saca una sola carta y se detiene, siempre queda con un valor entre 1 y 10, por lo tanto la probabilidad de estar en 10 o menos es 1.
Ejemplo 2: Input n = 6, k = 1, maxPts = 10. Output 0.60000. Explicación: Alice saca una sola carta; 6 de las 10 posibles cartas dan un total menor o igual a 6.
Ejemplo 3: Input n = 21, k = 17, maxPts = 10. Output 0.73278. Explicación: caso típico que ilustra la acumulación de probabilidades por varias extracciones.
Restricciones: 0 <= k <= n <= 10000 y 1 <= maxPts <= 10000.
Idea de la solución: usar programación dinámica y una ventana deslizante para mantener la suma de probabilidades de las últimas maxPts posiciones. Definir dp[i] como la probabilidad de llegar exactamente a i puntos cuando i es menor que k. Inicializar dp[0] = 1.0. Para i desde 1 hasta k menos 1 calcular dp[i] = windowSum dividido entre maxPts, donde windowSum es la suma de dp de las maxPts posiciones anteriores que existen. Al actualizar windowSum se añade dp[i] y se resta dp[i - maxPts] cuando i es mayor o igual que maxPts, manteniendo así la ventana deslizante. Finalmente la probabilidad buscada es la suma de probabilidades de los estados finales entre k y n; esas probabilidades se pueden acumular considerando las contribuciones que desde estados j menores que k alcanzan valores en el intervalo [k, n] con probabilidad dp[j] multiplicada por la fracción de caras válidas entre 1 y maxPts.
Fórmulas claves y pasos: dp[0] = 1. Para cada i en 1..k-1 hacer dp[i] = windowSum / maxPts. Mantener windowSum = windowSum + dp[i] y si i >= maxPts entonces windowSum = windowSum - dp[i - maxPts]. El resultado final se obtiene sumando para s desde k hasta n las probabilidades de alcanzar s, las cuales se derivan de las transiciones desde estados j < k a s = j + t con 1 <= t <= maxPts.
Complejidad: tiempo O(k) aproximado, ya que cada dp[i] se calcula en tiempo constante usando la ventana deslizante; espacio O(k) para almacenar dp. Esta estrategia es eficiente incluso cuando maxPts es grande porque no se repite la suma completa en cada paso.
Implementación: la solución se puede implementar en cualquier lenguaje. La versión típica en PHP o en otros lenguajes crea un arreglo dp de tamaño k y aplica la lógica de ventana deslizante descrita. Para precisión numérica hay que usar punto flotante y sumar las probabilidades finales en el intervalo de interés.
Consejos prácticos: manejar casos especiales al inicio como k igual a 0 donde la respuesta es 1.0 porque Alice no saca cartas, y si n es mayor o igual que k minus 1 más maxPts entonces la probabilidad puede tender a 1 en ciertos parámetros; comprobar límites para evitar accesos fuera de rango en el arreglo dp.
Sobre Q2BSTUDIO: Q2BSTUDIO es una empresa de desarrollo de software y aplicaciones a medida especializada en soluciones tecnológicas avanzadas. Ofrecemos software a medida y aplicaciones a medida para empresas que buscan automatizar procesos y mejorar su competitividad. Somos especialistas en inteligencia artificial e IA para empresas; desarrollamos agentes IA personalizados e implementamos soluciones de inteligencia artificial para mejorar la toma de decisiones y la eficiencia operativa. Además proporcionamos servicios de ciberseguridad para proteger activos digitales y datos sensibles, y servicios cloud AWS y Azure para migración, despliegue y operación en la nube. También somos expertos en servicios inteligencia de negocio y en integraciones con Power BI para crear cuadros de mando y visualizaciones accionables. Nuestro equipo combina experiencia en desarrollo de software a medida, arquitecturas cloud, seguridad y analítica para entregar proyectos llave en mano que alinean tecnología y objetivos de negocio.
Servicios destacados de Q2BSTUDIO: desarrollo de software a medida, aplicaciones a medida para web y móvil, soluciones de inteligencia artificial y machine learning, agentes IA para atención y automatización de tareas, servicios de ciberseguridad, consultoría y despliegue en servicios cloud AWS y Azure, y servicios inteligencia de negocio con Power BI e informes personalizados. Si buscas potenciar tu negocio con IA para empresas o seguridad avanzada, Q2BSTUDIO ofrece experiencia y servicios integrales adaptados a tus necesidades.
Palabras clave para posicionamiento: aplicaciones a medida, software a medida, inteligencia artificial, ciberseguridad, servicios cloud aws y azure, servicios inteligencia de negocio, ia para empresas, agentes IA, power bi.
Contacto y recursos: si quieres ejemplos de implementación o asistencia para integrar algoritmos probabilísticos y modelos de IA en tus productos, el equipo de Q2BSTUDIO puede asesorar y desarrollar soluciones a medida que incluyan desde la lógica algorítmica hasta la puesta en producción segura en la nube.