Kondansatörler, yüksek toleranslarla üretildiği için ünlüdür. Bu birçok durumda kabul edilebilir, ancak bazen sıkı toleranslı bir kapasite gereklidir. Tam olarak ihtiyacınız olan değere sahip bir kapasite elde etmek için yaygın bir strateji, kapasiteleri ihtiyacınız olan aralıkta bir şeye katkıda bulunacak şekilde dikkatlice ölçülen iki kapasitör paralel olarak kullanmaktır.
Bu meydan okumadaki amaç, (çoklu) bir dizi kapasite verildiğinde, kapasitörleri her bir çiftin toplam kapasitesi belirli bir aralıkta olacak şekilde eşleştirmektir. Ayrıca en iyi eşleşme setini, yani mümkün olduğunca çok çift bulunacak şekilde eşleşme kümesini bulmanız gerekir.
Kısıtlamalar
- Girdi bir seçim biçimini içerir
- sahip olduğunuz (çoklu) kapasitör setini temsil eden sıralanmamış bir kapasite listesi
- hedef aralığın alt ve üst sınırını temsil eden bir çift kapasite (dahil)
- girişteki tüm kapasiteler 2 30'dan küçük pozitif tamsayılardır , ünite pF'dir (önemli değil).
- Girişteki kapasiteler listesine ek olarak, sahip olduğunuz kapasitörler seti , 0 pF değerine sahip sonsuz miktarda kapasitör içerir.
- Çıktı, bir seçim formatında, her bir çiftin toplamının belirtilen hedef aralıkta olacağı şekilde bir çift kapasite listesi içerir . Ne çiftlerin sırası ne de bir çift içindeki kapasitelerin sırası belirtilmez.
- Çıkıştaki hiçbir kapasite, sahip olduğunuz kapasitör setinde göründüğünden daha sık görünmeyebilir . Başka bir deyişle: Çıkttığınız çiftler çakışmamalıdır.
- Programınızın ürettiği çıkıştan daha fazla kapasite çiftini içeren 4 ve 5 koşullarını yerine getirebilecek olası bir çıktı olmayacaktır.
- Programınız O ( n !) Süresinde sona erecektir; burada n , sahip olduğunuz kapasitör setini temsil eden listenin uzunluğudur.
- Loopholes istismar edilmeyecektir
- Hedef menzil boş olmayacaktır
puanlama
Puanınız sekizli olarak çözümünüzün uzunluğudur. Eğer çözümünüz bu problemi polinom zaman O ( n k ) içinde bazı k için çözmeyi başarırsa , puanınızı 10'a bölün. Bunun gerçekten mümkün olup olmadığını bilmiyorum.
Örnek giriş
aralık 100 ila 100, giriş dizisi
100 100 100
, geçerli çıktı:0 100 0 100 0 100
aralık 100 ila 120, giriş dizisi
20 80 100
, geçerli çıktı:0 100 20 80
çıktı
20 100
geçerli değilaralık 90 ila 100, giriş dizisi
50 20 40 90 80 30 60 70 40
, geçerli çıktı:0 90 20 80 30 70 40 60 40 50
aralık 90 ila 90, giriş dizisi
20 30 40 40 50 60 70 80 90
, geçerli çıktı:0 90 20 70 30 60 40 50
aralık 90 ila 110, giriş dizisi
40 60 50
, geçerli çıktı:40 60
a <= b <= c <= d
böyle a + d, a + c, b + d
aralıktaki tüm ama b + c
değil, ama bu bir çelişki verir.