What algorithm to use, least waste when sawing wood planks
This problem can be reduced to the binpacking problem (which is a special instance of the cutting stock problem, see @fade2black's answer)
The bins can represent the fixed size wood pieces, which are 100cm long in your example.
The items to be binned can be the list of needed wood lengths.
Minimizing for the minimal number of bins equates minimizing waste;

Let $L_M$ be the size of a bin, $L_{all} = \sum_{i=1}^N L_i$
Suppose there is a distribution of $L_i$ over $M_{min}$ bins, but it is not the minimum amount of waste.

Then there is a distribution of $L_i$ over $M_{minwaste}$ bins where $M_{min} &lt; M_{minwaste} $
And then the waste can be expressed as $[M_{minwaste} * L_M - L_{all}] &lt; [M_{min}*L_M - L_{all}] $
which simplifies to: $M_{minwaste} &lt; M_{min} $
This contradicts our premise and its derivative of $M_{min} &lt; M_{minwaste}$ .


Hence, $M_{minwaste}$ cannot be greater than $M_{min}$ and have less waste.


Python example using the binpacking module, note that binpacking is indeed NP-hard, as such the binpacking module is most likely using heuristiscs which will most likely result in approximation answers.
import binpacking
needed = [60, 30, 50, 20]
print(binpacking.to_constant_volume(needed, 100))

Outputs the following:
[[60, 30], [50, 20]]