Ciao!
E' un problema interessante, allora: per prima cosa un po' di considerazioni

Il problema sembra impostato in modo tale da richiedere una soluzione con ricorsione + backtracking

Sembrano anche esserci alcune soluzioni greedy, mentre l'ottimo è un po' più complicato.

Ricerca dell'ottimo:

Una funzione riempie ricorsivamente i contenitori con il liquido A a partire dai più piccoli (strategia greedy) e cerca, mediante backtracking, tutte le soluzioni, che memorizza e salva da qualche parte.
Un'altra funzione (oppure la stessa) riempie i contenitori con il liquido B a partire dai più grossi con il backtracking e di nuovo salva tutte le soluzioni da qualche parte.
Un'ultima funzione accoppia le soluzioni di A con quelle di B e valuta

1- se sono compatibili, cioè se non usano gli stessi contenitori e se, messe assieme, le due soluzioni che costituiranno la soluzione finale non violano qualche clausola del problema

2- il parametro di ottimo: il parametro di ottimo secondo me è la differenza tra quanti contenitori ho riempito con A (il più alto possibile) e quanti contenitori ho riempito con B 8il più basso possibile), più è alta è la differenza e migliore è la soluzione.

Alla fine scegli la soluzione con il valore di ottimo più alto

Questo problema mi interessa molto (io sono una amante degli algoritmi) e mi piacerebbe che mi tenessi informato sugli sviluppi.

Buona fortuna!