Üniversite Kod Yarışması Yarışmamın izniyle Alınan Zorluk
Cep telefonlarına olan bağımlılığımız, onları her gece maksimum pil seviyesine kadar şarj etmemizi sağlar, bu nedenle ertesi günün ortasında gücün bitmesi riskiyle karşı karşıya kalmayız. Gün boyunca ücretsiz bir çıkış gördüklerinde, olabilecekleri ücretlendiren insanlar bile var.
Ben onlardan biriyim.
Yıllar boyunca, pili her gece maksimum şarj etmemek için tekniğimi geliştirdim. Mükemmel bilinen tekrarlayan rutinlerimle, günün hangi saatlerinde bu kısmi şarjları yapabileceğime (ve seviyenin kaç birim artacağına) ve her şarj arasındaki pil seviyesini neyin düşürdüğüne açıkım. Bu verilerle her gece, ertesi gün evden ayrılmak zorunda olduğum minimum pil seviyesini hesaplıyorum, böylece asla iki birimin kendi empoze ettiğim eşiğinin altına düşmüyor.
Henüz uzmanlaşmamış olduğum şey, yerleşik rutinden ayrıldığımda ve aynı şeyleri yapmak için birkaç alternatifim olduğunda aynı hesaplamadır. Örneğin, farklı yollarla gelebileceğim başka bir şehre giderken olduğum günlerde olur.
Soruna ilk yaklaşımımda, sol üst köşeden sağ alt köşeye bir "satranç tahtası" etrafında hareket etmek istediğimi varsayıyorum. Her bir "hücrede" cep telefonunu belirli bir miktarda şarj edebilirim veya yükleyemiyorum ve yük seviyesi düşüyor.
Meydan okuma
Bir FxC tamsayı matrisi göz önüne alındığında, yük seviyesi 2 birimin altına düşmeden sol üst köşeden sağ alt tarafa gitmem gereken minimum pil seviyesi miktarını çıktı.
Matriste, pozitif bir sayı yolumu izlemeye devam etmek zorunda kalmadan önce cep telefonumu ne kadar şarj edebileceğimi gösterirken, negatif bir sayı çıkış olmadığını ve cep telefonunun pilinin şarj seviyesini bu miktar kadar düşürdüğünü gösterir. Kaynak ve hedef hücrelerdeki (sol üst ve sağ alt köşe) miktarların her zaman 0 olması ve değerlerin geri kalanının (mutlak değer) 100'ü geçmemesi garanti edilir.
Verilen Örnek :
Daha az bataryaya ihtiyacım olan yol:
Ve ihtiyacım olan minimum pil seviyesi miktarı 4
notlar
- Başlangıç her zaman sol üst köşe olacaktır
- Sonu daima sağ alt köşede olacak
- Daha önce geçmiş olduğunuz bir hücreye gidemezsiniz. Örnek: (0,1) konumuna geldiğinizde, başlangıç noktasına (0,0) gidemezsiniz
- Pil seviyeniz (herhangi bir nedenle) 2 altına düşemez
- Her zaman bir başlangıç ve bir son olacağını varsayabilirsiniz.
- Gerekirse 1 boyutlu dizileri çok boyutlu olarak alabilirsiniz
[1,2,3] == [[1,2,3]]
- Birden fazla doğru (minimum gerekli şarj) yol olabilir
- Amacınız rotayı değil, yalnızca gereken en düşük başlangıç pil seviyesini sağlamaktır
- Yalnızca dikey ve yatay olarak gidebilirsiniz (çapraz olarak değil)
Test Durumları
[0, 0] => 2
[0, 1, 0] => 2
[0, -1, 0] => 3
[0, 15, -20, 5, 0] => 7
[[0, -3],[-5, 0]] => 5
[[0, -5, -9, 5], [-3, 5, 2, -2], [2, -4, -4, 0]] => 5
[[0, -1, 1, -1], [-1, -1, -1, -1], [-1, 1, -1, -1], [1, 1, -1, 0]] => 4
[[0,1,-1],[-9,-9,1],[-9,1,-1],[-9,-1,-9],[-9,1,0]]
0s
tanesi sol üst köşede, diğeri sağ alt köşede yer alıyor