1792. Maximale durchschnittliche Erfolgsquote
Schwierigkeit:Mittel
Themen:Array, Greedy, Heap (Prioritätswarteschlange)
Es gibt eine Schule mit Schülerklassen und jede Klasse hat eine Abschlussprüfung. Sie erhalten ein 2D-Integer-Array „classes“, wobei „classes[i] = [passi, totali]“ gilt. Sie wissen im Voraus, dass es in der itenKlasse insgesamti Gesamtschüler gibt, aber nur eine bestandenei Anzahl von Schülern wird die Prüfung bestehen.
Sie erhalten außerdem eine Ganzzahl extraStudents. Es gibt noch weitere hervorragende Studenten, die garantiert sind, die Prüfung jeder Klasse zu bestehen, der sie zugewiesen sind. Sie möchten jeden der extraStudents-Schüler so einer Klasse zuordnen, dass die durchschnittliche Erfolgsquote über alle Klassen hinweg maximiert
ist.Die Bestehensquote einer Klasse entspricht der Anzahl der Schüler der Klasse, die die Prüfung bestehen, geteilt durch die Gesamtzahl der Schüler der Klasse. Die durchschnittliche Erfolgsquote
ist die Summe der Erfolgsquoten aller Kurse dividiert durch die Anzahl der Kurse.Geben Sie die maximal mögliche durchschnittliche Erfolgsquote zurück, nachdem Sie die zusätzlichen Studenten zugewiesen haben. Antworten innerhalb von 10-5
der tatsächlichen Antwort werden akzeptiert.Beispiel 1:
Beispiel 2:
Einschränkungen:
Hinweis:
<🎜>Lösung:
Wir können einen Max-Heap (Prioritätswarteschlange) verwenden. Dies liegt daran, dass wir effizient die Klasse finden müssen, die am meisten davon profitiert (die Änderung der Erfolgsquote maximiert), wenn wir einen zusätzlichen Schüler hinzufügen.
Verstehen Sie die Gewinnberechnung:
Verwenden Sie einen Max-Heap:
Zusätzliche Schüler iterativ verteilen:
Berechnen Sie den endgültigen Durchschnitt:
Lassen Sie uns diese Lösung in PHP implementieren: 1792. Maximale durchschnittliche Erfolgsquote
Erläuterung:
Heap-Setup:
- Wir verwenden einen Max-Heap (Prioritätswarteschlange), um Klassen basierend auf ihrer potenziellen Verbesserung der Erfolgsquote zu priorisieren, wenn ein zusätzlicher Schüler hinzugefügt wird.
- In PHP wird SplPriorityQueue für den Heap verwendet. Je höher der Prioritätswert, desto früher wird die Klasse verarbeitet.
Zusätzliche Studenten verteilen:
- Für jeden zusätzlichen Schüler extrahieren wir die Klasse mit dem höchsten Verbesserungspotenzial aus dem Haufen.
- Nachdem wir einen Schüler zu dieser Klasse hinzugefügt haben, berechnen wir dessen potenzielle Verbesserung neu und fügen ihn erneut in den Haufen ein.
Endgültige Durchschnittsberechnung:
- Nachdem wir alle zusätzlichen Schüler verteilt haben, berechnen wir die Gesamterfolgsquote für alle Klassen und geben den Durchschnitt zurück.
Präzision:
- Die Berechnungen werden mithilfe der Gleitkomma-Arithmetik durchgeführt, wodurch sichergestellt wird, dass die Antworten wie erforderlich auf 10^-5 genau sind.
Komplexität:
Zeitkomplexität:
Weltraumkomplexität:
Diese Implementierung verteilt die zusätzlichen Studenten effizient und berechnet die maximale durchschnittliche Erfolgsquote.
Kontaktlinks
Wenn Sie diese Serie hilfreich fanden, denken Sie bitte darüber nach, dem Repository einen Stern auf GitHub zu geben oder den Beitrag in Ihren bevorzugten sozialen Netzwerken zu teilen? Ihre Unterstützung würde mir sehr viel bedeuten!
Wenn Sie weitere hilfreiche Inhalte wie diesen wünschen, folgen Sie mir gerne:
Das obige ist der detaillierte Inhalt vonMaximale durchschnittliche Erfolgsquote. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!