Guía rápida de Leetcode 808: Servir sopa

Probabilidad de que la sopa A se agote antes que la B (más la mitad de empate) mediante programación dinámica y memorización, reduciendo a 25 mL y con atajo para n>4500.

16 ago 2025 • 4 min read • Q2BSTUDIO Team

Inteligencia-Artificial-

Resumen: Se presentan dos sopas A y B con n mL cada una. En cada turno se selecciona al azar una de cuatro operaciones con probabilidad 0.25: servir 100 mL de A y 0 mL de B; servir 75 mL de A y 25 mL de B; servir 50 mL de A y 50 mL de B; servir 25 mL de A y 75 mL de B. El proceso termina cuando A o B se vacían. Si una operación pide más cantidad de la disponible, solo se sirve lo que queda. El objetivo es calcular la probabilidad de que A se vacíe antes que B más la mitad de la probabilidad de que ambas se vacíen en el mismo paso.

Intuicion: Cada turno reduce ambas cantidades y el resultado depende de cuál recipiente se agote primero o si ambos se agotan simultáneamente. Las cuatro operaciones generan una estructura probabilística en forma de árbol y el problema consiste en calcular el valor esperado recorriendo ese árbol. Es natural emplear memorización para almacenar resultados de subproblemas que se repiten. Para n grande, específicamente por encima de 4500 mL, el resultado converge muy cerca de 1.0, por lo que se puede devolver 1 como atajo.

Simplificacion: Para reducir el espacio de estados se trabaja con unidades de 25 mL. Es decir, se convierte n en m igual al techo de n dividido entre 25. De esta manera cada operación se representa por decrecimientos enteros en esas unidades y se limita el número de estados a calcular.

Enfoque: Se define una función p(a, b) que devuelve la probabilidad deseada partiendo de a unidades de A y b unidades de B. Casos base: si a es menor o igual que cero y b es menor o igual que cero retornar 0.5; si a es menor o igual que cero retornar 1; si b es menor o igual que cero retornar 0. Para un estado general p(a, b) es igual a 0.25 por la suma de las cuatro llamadas recursivas con los decrementos correspondientes. Se usa memorización con un arreglo bidimensional o un diccionario para cachear resultados y evitar recálculos.

Pseudocodigo: funcion p de a coma b: si a es menor o igual que cero y b es menor o igual que cero retornar 0.5. Si a es menor o igual que cero retornar 1. Si b es menor o igual que cero retornar 0. Si existe resultado en memo retornar resultado. Calcular resultado igual a 0.25 multiplicado por la suma de p con a menos 4 coma b; p con a menos 3 coma b menos 1; p con a menos 2 coma b menos 2; p con a menos 1 coma b menos 3. Guardar resultado en memo y retornar resultado. Funcion principal sopaServings con n: si n mayor que 4500 retornar 1. Calcular m igual al techo de n dividido entre 25. Retornar p de m coma m.

Versiones y notas de implementacion: En C++ se puede usar un arreglo double size 300 por 300 y la función recursiva p con los casos base y memorización. En JavaScript es práctico emplear un Map para memoizar claves concatenadas y una función recursiva dp. En Python conviene usar lru cache de functools para simplificar la memorización. En las tres implementaciones la conversión a unidades de 25 mL y el atajo para n mayor que 4500 mejoran rendimiento.

Complejidad temporal y espacial: El número de estados únicos es del orden de m al cuadrado, donde m es el techo de n entre 25. En el peor caso para n igual a 4500 eso corresponde aproximadamente a 300 por 300 lo que da alrededor de 90000 estados. La complejidad espacial es del mismo orden por el uso de la tabla de memorización bidimensional.

Reflexion final: Este ejercicio mezcla probabilidad y programación dinámica recursiva. Los elementos clave son agrupar cantidades en unidades de 25 mL para limitar el espacio de estados, usar memorización para evitar recomputación y aprovechar la convergencia para n grande. Es un problema recomendable para practicar memorización, razonamiento probabilístico y optimización del espacio de estados.

Sobre Q2BSTUDIO: Q2BSTUDIO es una empresa de desarrollo de software y aplicaciones a medida especializada en soluciones tecnológicas para empresas. Ofrecemos software a medida, aplicaciones a medida, servicios de inteligencia artificial, ciberseguridad y consultoría en servicios cloud aws y azure. También desarrollamos servicios inteligencia de negocio, implementaciones de power bi, agentes IA y soluciones de ia para empresas que integran modelos de inteligencia artificial para optimizar procesos. Contamos con equipos expertos en inteligencia artificial, ciberseguridad y arquitecturas cloud para transformar ideas en productos escalables y seguros.

Contacto y servicios: Si necesitas proyectos de aplicaciones a medida, software a medida, consultoría en inteligencia artificial, ciberseguridad, servicios cloud aws y azure, servicios inteligencia de negocio, agentes IA, ia para empresas o implementaciones de power bi, Q2BSTUDIO puede ayudarte a diseñar, construir y desplegar soluciones adaptadas a tus necesidades empresariales.

A BREAK?

Play for a moment before you go

OUR SERVICES

How we can help you

Artificial intelligence

AI agents, chatbots, and intelligent assistants that automate tasks and serve your customers 24/7 to improve the efficiency of your business.

More info

Software Development

Web, mobile, and desktop applications, intranets, e-commerce, SaaS, and management platforms designed for your company's specific needs.

More info

Cloud services

Migration, infrastructure, managed hosting, high availability, and security on Microsoft Azure and Amazon Web Services to help your business scale without limits.

More info

Cybersecurity and pentesting

Security audits, penetration testing and protection of applications, data and infrastructure on-premise and cloud, with ethical hacking and regulatory compliance.

More info

Business Intelligence

Dashboards and data analysis with Power BI: we integrate your sources, design dashboards and KPIs and turn your data into decisions.

More info

Process automation

We automate repetitive tasks and connect your applications with n8n, Power Automate, Make, and RPA, eliminating manual work and increasing productivity.

More info

Training for Companies

We train your teams in technology with criteria: web development, databases, Git, best practices and security, automation with n8n, artificial intelligence for companies and creation of AI solutions with Azure AI Foundry.

More info

Code Auditing

We audit the code that you, your team or an AI create: we tell you what is good and what to improve, we secure it and make it ready for production, web or app.

More info

AI Image Generation

We create for you the images that your business needs with artificial intelligence: product, networks, advertising, illustration and avatars. You tell us what you want and we deliver it ready to use.

More info

AI Video Generation

We create videos with artificial intelligence for you: promotional, networking, virtual presenters, dubbing and animations. You tell us the idea and we will deliver it assembled and ready to publish.

More info

AI Conversational Avatars

We create conversational avatars with AI – digital humans with a face and voice – that serve your customers and teams with the knowledge of your company, on your website, interactive monitors, WhatsApp or Teams.

More info

Online Marketing and AI

Google Ads, Meta Ads, LinkedIn Ads and AI Engine Positioning (GEO/AEO): we attract customers and make your brand appear where they search for you, also on ChatGPT, Gemini and Perplexity.

More info

Do you have a project in mind?

Tell us your vision and we'll turn it into a software solution. Whatever the scope, we make your idea real.

Live Chat