Se è necessario dividere l'array in esattamente k sottosegmenti, il secondo parametro viene semplicemente aggiunto nella programmazione dinamica: in quanti segmenti suddividere.
Cioè, ora considereremo il seguente dp:
dp[i][j] è la risposta per i primi i elementi, se li dividiamo esattamente in j segmenti.
Fai attenzione agli stati non validi.
Il ricalcolo della dinamica è lo stesso, ma tenendo conto del secondo parametro. Cioè, contando dp[i][k] e ordinando attraverso il bordo sinistro dell'ultimo sottosegmento j, ricalcoliamo da dp[i][k] a dp[j - 1][k - 1] e il valore del segmento [j;io].