Bir dağ ilk nokta çizgi segmentleri bir dizi olarak tanımlanır koordinatları vardır (0,a)
burada a > 0
olan, son nokta koordinatları vardır ve (b,0)
, b > 0
. Tüm orta noktalarda kesinlikle 0'dan büyük bir y koordinatı (koordinat) vardır. Dağdaki puanlara, artan x-koordinatı (abscissa) sıralaması verilir. İki noktanın aynı x koordinatına sahip olabileceğini ve dağın dikey bir kesimini oluşturabileceğini unutmayın. Aynı x koordinatına sahip iki nokta verilirse, verildikleri sırayla bağlanmaları gerekir. Ek olarak, dağın yatay kısımları olabilir. Bu yatay kısımlar, ne olursa olsun yanmaz. Tüm koordinatlar negatif olmayan tamsayılardır.
Soru: Güneşin dağın sağında yer alan sonsuz bir dikey ışık düzlemi olduğu varsayılarak aydınlatılacak olan dağın toplam uzunluğu nedir? Bu sayının yuvarlatılması gerekmez, ancak yuvarlanırsa en az dört ondalık basamak içerir. Bir resim ekledim : Burada koyu çizgiler, yanan kısımları temsil eder. Girişte, P'nin Q'dan önce göründüğüne dikkat edin (PQ dikey bir çizgi kesimidir);
Girdiyi, liste listesi, tek liste, dize vb. Gibi makul bir biçimde alabilirsiniz.
Test durumu:
(0,3000)
(500, 3500)
(2500, 1000)
(5000,5000)
(9000,2000)
(9000,3500)
(10200,0)
Output: 6200.0000
Bu resimde gösterildiği gibi burada iki tane aydınlatmalı bölüm vardır: İlki 5000/2 = 2500 ve ikincisi 3700 uzunluğa sahiptir.
Bu kod golf , yani bayt cinsinden en kısa cevap kazanır.
(x1, y1)
ve(x2,y2)
“blok” olan noktanın olmasını bekleyin(x3, y3)
. y2 <y3 <= y1 olduğunu varsayalım. Sonra segmentin uzunluğu budur((y1 - y3)/(y1 - y2))*sqrt((x1 - x2)^2 + (y1 - y2)^2)
. gerçekte kullanılan segmentin