Sebagai band roadie, Anda harus mengemas truk. Program Anda akan menempatkan paket-paket tersebut sehingga sesuai dengan ketinggian terkecil.
Sebuah truk yang penuh sesak
Aturan
Paket dapat diputar melalui kelipatan 90 derajat. Paket mungkin menyentuh tetapi tidak boleh tumpang tindih.
Outputnya adalah gambar yang diemas ulang (ke file atau stdout). Program Anda dapat menggunakan format gambar raster input atau output apa saja.
Program Anda harus menerima sejumlah paket berbagai bentuk dalam gambar hingga 4000x4000 piksel. Itu tidak boleh hardcoded untuk gambar tes ini. Jika saya mencurigai kiriman apa pun dirancang khusus untuk gambar tertentu ini, saya berhak menggantinya dengan gambar uji baru.
Skor
Skor Anda adalah ketinggian terkecil dari sebuah persegi panjang yang akan berisi pengaturan Anda (lebar adalah lebar persegi panjang input). Dalam kasus seri, entri yang paling awal menang.
Celah standar dilarang seperti biasa.
sumber
Jawaban:
Bahasa: Jawa
Nilai:
555533Saya hanya pergi untuk mencoba memaksa solusi dengan mengulangi bentuk dalam urutan area yang menurun (perimeter dalam kasus dasi) dan mencoba semua kemungkinan pengepakan sampai ditemukan pengepakan yang valid untuk bentuk di mana titik posisi bentuk diperbaiki. dan algoritma berlanjut ke bentuk selanjutnya. Agar mudah-mudahan meningkatkan kualitas hasil ketika mencari kemasan yang valid, pertama semua posisi yang mungkin dicoba dengan bentuk yang diputar sedemikian rupa sehingga lebih tinggi daripada yang lebih luas.
Catatan: ini mengasumsikan bahwa gambar input memiliki semua bentuk yang dipisahkan oleh ruang putih. Dibutuhkan lebar maksimum output sebagai argumen pertama dan daftar gambar bentuk sebagai argumen lainnya (setiap gambar bentuk dapat memiliki satu atau lebih bentuk yang dipisahkan oleh setidaknya satu baris piksel putih)
Solusi yang dihasilkan ini (membutuhkan sekitar
4 menit30 detik pada mesin saya) adalah:Melihat gambar ini sepertinya hasilnya dapat ditingkatkan dengan mengulangi semua bentuk posting pengepakan dan mencoba untuk memindahkan semuanya sedikit. Saya mungkin mencoba melakukannya nanti.sumber