1792. Taux de réussite moyen maximum
Difficulté :Moyen
Sujets :Array, Greedy, Heap (File d'attente prioritaire)
Il y a une école qui a des classes d'élèves et chaque classe aura un examen final. Vous recevez un tableau d'entiers 2D classes, où classes[i] = [passi, totali]. Vous savez d'avance que dans la iième classe, il y a au totali total d'élèves, mais seul le nombre de réussitei d'élèves réussira l'examen.
Vous recevez également un nombre entier d'extraÉtudiants. Il existe d'autres étudiants brillants qui sont garantis de réussir l'examen de n'importe quelle classe à laquelle ils sont affectés. Vous souhaitez affecter chacun des étudiants extraStudents à une classe de manière à maximiser le taux de réussite moyen dans toutes les classes.
Le taux de réussite d'une classe est égal au nombre d'élèves de la classe qui réussiront l'examen divisé par le nombre total d'élèves de la classe. Le taux de réussite moyen est la somme des taux de réussite de toutes les classes divisée par le nombre de classes.
Renvoyer le taux de réussite moyen maximum possible après avoir attribué les étudiants extraStudents. Les réponses dans les 10-5 de la réponse réelle seront acceptées.
Exemple 1 :
Exemple 2 :
Contraintes :
Indice :
Solution :
Nous pouvons utiliser un max-heap (file d'attente prioritaire). En effet, nous devons trouver efficacement la classe qui en profite le plus (maximise la modification du taux de réussite) lors de l'ajout d'un élève supplémentaire.
Comprendre le calcul du gain :
Utiliser un Max-Heap :
Distribuer de manière itérative les étudiants supplémentaires :
Calculer la moyenne finale :
Implémentons cette solution en PHP : 1792. Taux de réussite moyen maximum
Explication:
Configuration du tas :
- Nous utilisons un tas maximum (file d'attente prioritaire) pour hiérarchiser les classes en fonction de leur amélioration potentielle du taux de réussite lorsqu'un élève supplémentaire est ajouté.
- En PHP, SplPriorityQueue est utilisé pour le tas. Plus la valeur de priorité est élevée, plus la classe est traitée tôt.
Répartition des étudiants supplémentaires :
- Pour chaque élève supplémentaire, nous extrayons du tas la classe avec le potentiel d'amélioration le plus élevé.
- Après avoir ajouté un élève à cette classe, nous recalculons son potentiel d'amélioration et le réinsérons dans le tas.
Calcul moyen final :
- Après avoir réparti tous les étudiants supplémentaires, nous calculons le taux de réussite total pour toutes les classes et renvoyons la moyenne.
Précision :
- Les calculs sont effectués à l'aide de l'arithmétique à virgule flottante, ce qui garantit que les réponses sont précises à 10^-5 selon les besoins.
Complexité:
Complexité temporelle :
Complexité spatiale :
Cette implémentation répartit efficacement les étudiants supplémentaires et calcule le taux de réussite moyen maximum.
Liens de contact
Si vous avez trouvé cette série utile, pensez à donner une étoile au référentiel sur GitHub ou à partager la publication sur vos réseaux sociaux préférés ?. Votre soutien signifierait beaucoup pour moi !
Si vous souhaitez du contenu plus utile comme celui-ci, n'hésitez pas à me suivre :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!