LA DIETA DI POLDO - Problemiiii

Ciao a tutti! Ho provato ripetutamente a risolvere ‘La dieta di Poldo’, completamente a mio modo pur sapendo che ne esistono tanti altri. Non capisco perchè ricevo solo 5/100, lascio il codice qui:

#include
#include
#include

using namespace std;

int main() {
ios::sync_with_stdio(false);

ifstream cin("input.txt");
ofstream cout("output.txt");

int N,mangiati=1,massimo=1,i=0;
cin >> N;
vector<int> V(N);
for(int i = 0; i < N; i++) {
    cin >> V[i];
}
i = 0;
for(int i=0;i<N-1;i++){
    if (V[i]>V[i+1]) mangiati = mangiati + 1;
    else if (mangiati > massimo){
        massimo = mangiati; mangiati = 1;
    }
    else mangiati = 1;
}
if (mangiati > massimo) massimo = mangiati;
cout << massimo;
return 0;

}

Come posso fare?? :frowning:

Per risolvere questo problema ho usato la dp, tenendo in considerazione le migliori combinazioni possibili. Il tuo codice invece scarta molte altre combinazioni che portano alla soluzione. Considera questo input:

5
5 6 2 4 3

Il tuo codice da come risultato 2, combinando il piatto di peso 6 con quello di peso 2, quando la migliore combinazione è scegliere il secondo piatto (di peso 6) il quarto piatto (di peso 4) e l’ultimo piatto (di peso 3)

Inizialmente non avevo letto e capito che si potesse scartare uno o più panini. Detto questo ho sentito parlare molto di dp, senza capire come poterla davvero applicare al problema, sai darmi un indizio? Grazie! =)

Per risolvere il problema, innanzitutto ho cambiato punto di vista: con la dp quello che fai è dividere il problema in sottoproblemi, cercando la soluzione migliore per ognuno e unendo quelle che trovi per ottenere la soluzione finale.
Riesci a trovare un modo per dividerlo in sottoproblemi?
Hint:

Immagina di avere un solo panino, come ti comporteresti? E se ne aggiungessi uno ad ogni passo, quale sarebbe la soluzione ottima ad ogni situazione?

1 Mi Piace

Grazie :+1: :smile:

1 Mi Piace