05AB1E , 8 7 5 octets
2 octets sauvés grâce à @Adnan
0š¥þO
Essayez-le en ligne!
Comment?
Ceci utilise l'algorithme qui a été trouvé pour la première fois par @tsh . Si vous aimez cette réponse, assurez-vous de la faire revenir également!
Chaque fois qu'un gratte-ciel est plus bas ou plus haut que le précédent, il peut être peint «gratuitement» en prolongeant simplement les coups de pinceau.
Par exemple, peindre les gratte-ciel et dans la figure ci-dessous ne coûte rien.BC
D'autre part, nous avons besoin de 2 nouveaux coups de pinceau pour peindre le gratte-ciel , peu importe qu'ils soient réutilisés ou non.E
Pour le premier gratte-ciel, nous avons toujours besoin d'autant de coups de pinceau que de sols.
En tournant ça en maths:
S=h0+∑i=1nmax(hi−hi−1,0)
Si nous ajoutons à la liste, ceci peut être simplifié comme suit:0
S=∑i=1nmax(hi−hi−1,0)
Commenté
0š¥þO # expects a list of non-negative integers e.g. [10, 9, 8, 9]
0š # prepend 0 to the list --> [0, 10, 9, 8, 9]
¥ # compute deltas --> [10, -1, -1, 1]
þ # keep only values made of decimal digits
# (i.e. without a minus sign) --> ["10", "1"]
O # sum --> 11