Étant donné un arbre avec n nœuds (numérotés de 1 à n) et n-1 arêtes. Chaque arête a deux entiers, un poids et un gain, qui lui sont associés. Vous avez également un numéro K. Vous pouvez commencer avec n'importe quel noeud, et vous devez faire des transactions. Dans chaque trade, vous perdez le montant égal au poids du bord et gagnez un profit égal à la valeur de gain du bord. Vous devez maximiser le bénéfice de sorte que le montant total perdu < = KTrouver un chemin/des sous-chemins dans un arbre de sorte que la somme des poids soit inférieure à l'entier donné
Voici un lien vers la question d'origine. Le concours correspondant est maintenant terminé.
https://www.hackerrank.com/contests/gs-quantify-2017/challenges/profit-maximization
Ce que je l'ai fait:
J'ai construit une approche récursive en considérant chaque nœud comme nœud à partir du chemin, puis en calculant récursivement le maximum de profit en considérant chacun des noeuds suivants respectueux des lois par le contraintes.
Mais il est évident que cela a une très grande complexité temporelle.
Existe-t-il un moyen plus élégant et plus rapide de le faire?