# Aiuto per Trasporto tronchi (oii\_alberi)

**URL:** <https://forum.olinfo.it/t/aiuto-per-trasporto-tronchi-oii-alberi/10069>\
**Category:** Chiarimenti\
**Created:** [7 Settembre 2026, 10:43am UTC](https://forum.olinfo.it/t/aiuto-per-trasporto-tronchi-oii-alberi/10069 "2026-09-07T10:43:38Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![Sansi](https://forum.olinfo.it/user_avatar/forum.olinfo.it/sansi/32/2430_2.png) [@Sansi](https://forum.olinfo.it/u/Sansi)\
**Post date:** [7 Settembre 2026, 10:43am UTC](https://forum.olinfo.it/t/aiuto-per-trasporto-tronchi-oii-alberi/10069/1 "2026-09-07T10:43:38Z")

</div>

Ciao a tutti, stavo risolvendo il problema [Trasporto tronchi](https://training.olinfo.it/task/oii_alberi).  
Ho creato un codice che mi da 100/100, tuttavia penso che sia comunque sbagliato.

```
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
long long carica(int N, int K, vector<int> A) {
	ll ans = 0;
	for(int i = 0; i < N; i++){
		if(A[i] < K) ans += A[i];
		else{
			if(i == N - 1){
				ans += A[i];
			}
			else{
				ans += 1LL * K * (N - i);
				ans += A[N - 1];
				return ans;
			}
		}
	}
	return ans;
}

// GRADER DI ESEMPIO, NON MODIFICARE

#ifndef EVAL

int main() {
    int N, K;
    cin >> N >> K;

    vector<int> A(N);
    for (int &a: A) cin >> a;

    cout << carica(N, K, A) << endl;

    return 0;
}

#endif

```

nel caso di test

5 30  
1 2 3 31 32  
il risultato dovrebbe essere 69, senza sfrondare alcun tronco, mentre il codice che ho inviato da come risposta 98 e sfronda gli ultimi due tronchi.  
Mi spiegate se sto sbagliando qualcosa?

Grazie mille in anticipo!

---

<div class="post-metadata">

**Author:** ![BestCrazyNoob](https://forum.olinfo.it/letter_avatar_proxy/v4/letter/b/7cd45c/32.png) [@BestCrazyNoob](https://forum.olinfo.it/u/BestCrazyNoob)\
**Post date:** [8 Settembre 2026, 7:47am UTC](https://forum.olinfo.it/t/aiuto-per-trasporto-tronchi-oii-alberi/10069/2 "2026-09-08T07:47:33Z")

</div>

La tua soluzione è effettivamente sbagliata: trova sempre il caso migliore sfrondando sempre almeno un tronco, ti basta confrontare il risultato con il caso in cui non sfrondi alcun tronco.

Comunque mi stupisce il fatto che prenda 100/100 …  
Metteremo (eventually) a posto i casi di test

---

<div class="post-metadata">

**Author:** ![LoRy24](https://forum.olinfo.it/user_avatar/forum.olinfo.it/lory24/32/3205_2.png) [@LoRy24](https://forum.olinfo.it/u/LoRy24)\
**Post date:** [13 Settembre 2026, 1:11am UTC](https://forum.olinfo.it/t/aiuto-per-trasporto-tronchi-oii-alberi/10069/3 "2026-09-13T01:11:30Z")

</div>

Io sono riuscito a risolverlo semplicemente così: con un algoritmo DP. Per darti un suggerimento senza spoilerarti tutto, ragiona su quanto ti costa spostare alberi non sfrondati e farli arrivare a 0, quanto ti costa invece spostarli come singoli sfrondati e quanto come catena.

Alla fine, esce un codice veramente di poche righe e veramente curioso. Sto maledetto problema mi ci ha messo qualche mese per capirlo, perché pensavo veramente fosse un greedy banale, ma quando ho cambiato approccio mi volevo prendere a sberle 🤣
