** Arimoto **
Fence Repair
Le problème est d'utiliser la méthode gourmande, mais je ne comprenais pas pourquoi elle devenait gourmande, alors j'ai commencé par essayer de la vérifier.
L'agriculteur John essaie de couper $ N $ de planches sur une planche très longue pour réparer la clôture. La longueur de la planche que vous essayez de couper est $ L_1, L_2, \ dots, L_N $, et la longueur de la planche d'origine est juste la somme de ces derniers. Lors de la découpe d'une planche, cela coûte autant que la longueur de la planche. Par exemple, supposons que vous vouliez couper une planche de 5,8,8 $ $ 3 $ sur une planche de 21 $ de long. Découper une planche de 21 $ en planches de 13 $ et 8 $ de long coûte 21 $. Couper cette planche de 13 $ en planches de 5 $ et 8 $ coûte 13 $. Il en coûte 34 $ au total. Au minimum, combien cela coûte-t-il de supprimer toutes les planches?
Contraintes
Pour de nombreux problèmes, il peut souvent être généralisé à une sorte de structure de graphe, qu'il s'agisse d'un arbre ou non. L'exemple montré dans cet énoncé de problème peut être exprimé comme un arbre dichotomisé comme suit. Le coût à chaque déconnexion est la valeur du nœud parent, de sorte que le coût total est la somme de toutes les valeurs des nœuds non feuille. Dans l'exemple ci-dessus, la somme des nœuds non-feuilles (blanc) est 13 $ + 21 = 34 $, ce qui correspond au coût total de l'énoncé du problème.
Le but est de minimiser le coût total à ce moment.
Quand je l'ai lu, cela semblait correct, mais je n'étais pas vraiment convaincu. Je pense que le but est de transmettre un changement dans l'idée de penser de bas en haut parce que les conditions sont divisées lors de la résolution de haut en bas, mais je ne comprends pas cela lorsqu'un problème plus difficile est expliqué plus tard. J'avais l'impression d'être coincé, alors j'ai décidé de le poursuivre.
Voir ce qui est fixe (prémisse) et quel type d'opération provoque des fluctuations est la politique de base pour résoudre tout problème. Puisque c'est le problème introduit dans le chapitre sur la cupidité, il est méta-entendu qu'il y a toujours une opération qui réduit le coût total. Dans la situation de solution réelle, il est nécessaire de sélectionner l'algorithme comprenant le jugement.
Maintenant, dans cette question, les longueurs de toutes les planches une fois la découpe terminée sont données, de sorte que le nombre de nœuds qui deviendront éventuellement des feuilles est fixe. En d'autres termes, la structure arborescente change en fonction de l'ordre dans lequel les feuilles sont combinées.
Même si vous essayez de comprendre comment cela change, même si vous y pensez soudainement dans un cas compliqué, cela échouera. Le grand mathématicien, Carte, a également dit "diviser les difficultés" </ b>.
Se diviser en cas incroyablement simples et réfléchir est un schéma important pour résoudre tout problème. Alors, quel est le cas le plus simple? Réfléchissons ensemble.
Inutile de dire que le cas de $ N = 1 $ est le plus simple. En d'autres termes, la plaque d'origine ne sera pas coupée. Avec cela, il n'y a pas de fluctuation ni de merde, et le coût est toujours de 0 $. Augmentons $ N $.
C'est le cas où le nombre de déconnexions est de 1 $. Là encore, il n'y a pas de variation lorsque la longueur de la plaque après découpe est fixée. Augmentons encore $ N $.
Désolé de vous avoir fait attendre. Les variations sortent enfin de $ N = 3 $. Tout d'abord, par souci de simplicité, mettons la longueur de la planche après découpe, qui est de 3 $, comme $ A \ leqq B \ leqq C $. Ce serait une hypothèse qui ne perdrait pas sa généralité.
Eh bien, la façon de couper ici est un modèle de 3 $.
C'est difficile à comprendre même si je l'écris en lettres, alors j'ai fait un chiffre. Seule la différence dans la partie rouge de la figure affecte le coût total. La position des autres parties est différente, mais la valeur de la somme ne change pas. En d'autres termes, minimiser le coût total dans ce cas équivaut à choisir le plus petit de $ (A + B), (B + C), (C + A) $.
Si vous regardez attentivement pour voir s'il y a suffisamment de variations, choisissez $ 2 $ sur 3 $ $, c'est-à-dire $ {} _3 \ mathrm {C} _2 = {} _3 \ mathrm {C} _1 = 3 $, qui est certainement le modèle $ 3 $. Il ne peut y en avoir. Donc, bien sûr, quel motif est le plus petit est $ (A + B) $, qui est de 2 $ sélectionné à partir de la plus petite valeur.
En résumé, si $ N = 3 $, vous pouvez découper en sélectionnant 2 $ parmi le plus petit. En utilisant ce fait, considérons le cas de $ N = 4 $.
Avec $ N = 3 $, nous avons pu affiner le modèle qui minimise le coût total. D'un point de vue méta, puisqu'il s'agit d'une méthode gourmande, il semble qu'il sera possible d'affiner le modèle avec un sentiment progressif après cela.
Maintenant, le cas de $ N = 4 $ a des planches de 4 $. Si vous divisez la caisse dans la première coupe, le motif sera divisé selon que vous coupez la planche $ ABCD $ par 1 $ + 3 $ ou 2 $ + 2 $.
Le modèle de coupe avec $ 1 + 3 $ est une extension du cas de $ N = 3 $ du côté racine. Après avoir coupé $ 1 $ pour la première fois, il aura la même forme que $ N = 3 $, et la planche $ ABC $ ne changera qu'en $ \ {ABC, ABD, ACD, BCD \} $.
En d'autres termes, il y a un total de 4 $ \ times 3 = 12 $ pattern, mais en réalité cela revient au pattern $ 4 $ dont on coupe en premier. Ici, la généralisation du coût total du cas de $ N = 3 $ est de 2A + 2B + C $. (Choisir le plus petit 2 $ sur 3 $ équivaut à choisir le plus grand)
Par contre, si vous ajoutez $ D $, qui est $ A \ leqq B \ leqq C \ leqq D $, le cas est $ N = 4 $. Le modèle de 4 $ suivant est utilisé pour résumer le coût total.
Maintenant, arrêtons-nous ici et jetons un coup d'œil au modèle $ 2 + 2 $.
Si vous y réfléchissez un instant, vous pouvez voir que le coût total sera de 2 $ \ fois (A + B + C + D) $ quelle que soit la combinaison.
En divisant les cas jusqu'à présent, nous avons constaté que les modèles qui doivent être considérés comme le cas de $ N = 4 $ sont réduits à 5 $ au total, y compris le modèle de 4 $ mentionné précédemment.
Maintenant, soustrayons $ 2 \ times (A + B + C + D) $ de tous les cas pour comparer la relation de grandeur de 5 $ $.
Quelle est la valeur qui peut être le coût le plus bas? En considérant $ A \ leqq B \ leqq C \ leqq D $, nous pouvons voir ce qui suit.
En d'autres termes, la casse minimum change en fonction du résultat du jugement de $ A + B \ leqq D $. </ b>
Regardez de plus près $ A + B \ leqq D $. C'est fondamentalement la même chose que d'ajouter le résultat fusionné de $ A + B $ et de trier à nouveau.
En effet, $ C $ ne peut en aucun cas être la valeur maximale au moment de $ C \ leqq D $. Choisir 2 $ du plus petit des 3 $ équivaut à choisir le maximum de 1 $. Vous n'avez pas besoin des informations $ C $ qui ne peuvent pas être maximisées.
Visualisons cela d'une manière plus compréhensible. Dans le cas de $ N = 4 $, considérons le problème de sélectionner $ 2 $ du côté le plus petit et de fusionner $ A + B $ en $ M $.
Comme je l'ai mentionné plus tôt, il n'y a que des cas de 2 $ ci-dessous. $ M $ est le cas le plus grand, ou $ D $ est le cas le plus grand.
C'est vrai. Après tout, même si vous pétrissez diverses choses de haut en bas, si vous fusionnez et remplacez à partir du plus petit, le cas de $ N = 4 $ se terminera dans le cas de $ N = 3 $. Si vous renvoyez $ A + B $ à $ M $ pour confirmation, ce sera sous la forme d'une classification de cas qui a été discutée de haut en bas comme suit.
Regardons maintenant le coût de chaque feuille. Il est facile de voir que le coût total de la feuille à 1 $ est le produit de la valeur et de la profondeur du nœud feuille. Essayez de tracer la feuille $ A $ dans la figure précédente jusqu'à la racine. Vous pouvez voir que toutes les routes principales $ 1 $ menant à la racine contiennent $ A $, et les autres routes ne contiennent pas $ A $.
Et comme il est difficile de penser à la fois à l'axe de valeur et de profondeur $ 2 $, pensez dans une perspective de même profondeur. Même si on ne sait pas quel type d'arborescence il s'agira, plus la valeur est petite, plus le coût est bas à la même profondeur. Cela signifie qu'il est toujours avide de remplir avec la plus petite paire, étant donné que les feuilles sont remplies dans l'ordre du plus profond. En effet, encore une fois, "plus la valeur est petite, plus le coût est bas si la profondeur est la même".
Si vous essayez de faire cela de haut en bas, vous devrez effectuer plusieurs sélections à une profondeur de 1 $, ce qui crée soudainement un cas. Comme vous pouvez le voir que $ N = 4 $ est assez gênant, cela signifie que le cas maximum de $ N = 20000 $ est pratiquement impossible.
--La difficulté est divisée
Veuillez vous reporter au Cahier des défis du concours de programmation pour le code de réponse réel.
Les pros compétitifs ont commencé dans le mois de 8 $ de 2020 $. Je publie généralement des articles sur Blog personnel.
Recommended Posts