2014年4月18日 星期五

Lots of Sunlight

題目出處: ACM-ICPC World Final 2005
題目連結: Lots of Sunlight
題目大意: 在一個城市裡頭,求給定的大樓的某一層樓,在一整天能照到太陽的時間範圍。或者該層樓不存在。
解題方法: 首先,太陽可以假設為無窮遠的地方升起和降落,因此如果周遭大樓層數比你矮,必定能完整看到日出日落。
針對每一筆詢問,分別檢查左邊和右邊,若大樓最高層數大於等於你,則必須考慮此樓層對你的影響。
因為有給一層樓的高度和大樓寬度和大樓之間的距離,因此可以用atan去求得角度。而取使你仰角最高的大樓作為答案。
注意!題目有敘述,因為照到陽光定義為,需要整面照到,因此由該一面最低點往其他大樓的最高點連出去,才為正確角度。
拿下圖為例,A'影響A,假設一層樓高是2,大樓寬度是7,此兩棟大樓之間寬度是4,則角度為atan((2.0*3)/4)。


代碼如下:

沒有留言:

張貼留言