1792. Nisbah Purata Lulus Maksimum
Kesukaran: Sederhana
Topik: Susunan, Tamak, Timbunan (Barisan Keutamaan)
Terdapat sekolah yang mempunyai kelas pelajar dan setiap kelas akan menghadapi peperiksaan akhir. Anda diberikan kelas tatasusunan integer 2D, dengan kelas[i] = [lulusi, jumlahi]. Anda tahu sebelum ini bahawa dalam kelas ith, terdapat jumlahi jumlah pelajar, tetapi hanya lulusi bilangan pelajar akan lulus peperiksaan.
Anda juga diberikan pelajar tambahan integer. Terdapat seorang lagi pelajar cemerlang Pelajar tambahan yang dijamin untuk lulus peperiksaan mana-mana kelas yang ditugaskan kepada mereka. Anda ingin menugaskan setiap pelajar tambahan kepada kelas dengan cara memaksimumkan purata nisbah lulus merentas semua kelas.
nisbah lulus kelas adalah sama dengan bilangan pelajar kelas yang akan lulus peperiksaan dibahagikan dengan jumlah bilangan pelajar kelas itu. nisbah lulus purata ialah jumlah nisbah lulus semua kelas dibahagikan dengan bilangan kelas.
Kembalikan maksimum nisbah kelulusan purata yang mungkin selepas menetapkan pelajar tambahan Pelajar. Jawapan dalam masa 10-5 daripada jawapan sebenar akan diterima.
Contoh 1:
Contoh 2:
Kekangan:
Petunjuk:
Penyelesaian:
Kita boleh menggunakan timbunan maksimum (baris gilir keutamaan). Ini kerana kita perlu mencari kelas yang paling mendapat manfaat dengan cekap (memaksimumkan perubahan dalam nisbah lulus) apabila menambah pelajar tambahan.
Fahami Pengiraan Keuntungan:
Gunakan Max-Heap:
Agihkan Pelajar Tambahan Secara Berulang:
Kira Purata Akhir:
Mari laksanakan penyelesaian ini dalam PHP: 1792. Nisbah Purata Lulus Maksimum
Penjelasan:
Persediaan Timbunan:
- Kami menggunakan timbunan maksimum (baris gilir keutamaan) untuk mengutamakan kelas berdasarkan potensi peningkatan dalam nisbah lulus apabila pelajar tambahan ditambah.
- Dalam PHP, SplPriorityQueue digunakan untuk timbunan. Lebih tinggi nilai keutamaan, lebih awal kelas diproses.
Mengagihkan Pelajar Tambahan:
- Untuk setiap pelajar tambahan, kami mengekstrak kelas dengan potensi peningkatan tertinggi daripada timbunan.
- Selepas menambah seorang pelajar ke kelas itu, kami mengira semula potensi peningkatannya dan memasukkannya semula ke dalam timbunan.
Pengiraan Purata Akhir:
- Selepas mengagihkan semua pelajar tambahan, kami mengira jumlah nisbah lulus untuk semua kelas dan mengembalikan purata.
Ketepatan:
- Pengiraan dilakukan menggunakan aritmetik titik terapung, yang memastikan jawapan tepat hingga 10^-5 seperti yang diperlukan.
Kerumitan:
Kerumitan Masa:
Kerumitan Angkasa:
Pelaksanaan ini mengagihkan pelajar tambahan dengan cekap dan mengira nisbah purata lulus maksimum.
Pautan Kenalan
Jika anda mendapati siri ini membantu, sila pertimbangkan untuk memberi repositori bintang di GitHub atau berkongsi siaran pada rangkaian sosial kegemaran anda ?. Sokongan anda amat bermakna bagi saya!
Jika anda mahukan kandungan yang lebih berguna seperti ini, sila ikuti saya:
Atas ialah kandungan terperinci Nisbah Purata Lulus Maksimum. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!