2013年2月28日 星期四

Codeforces 198 C. Delivering Carcinogen

Codeforces 的題目還蠻有品質保證的

很不錯的幾何題。不知道怎麼做就,二分搜

假設答案是 t 秒,那麼 > t 秒的都可以(先走到跟他一樣,而且V > Vp),利用這個性質來二分搜。

所以現在那個一直在繞圈圈的行星,被我們固定住

你只要找到所在位置與該行星的最短距,就解決了

直線永遠是最短距離,所以假如你不會穿越中間的圓圈,就直接拿他們的直線距離。

假設有穿越中間的圓圈,可以知道走切線再走圓弧再走切線,會是最短距離,

所以把他們一一算出來之後,就成功了。

=======================================

子問題-

1. 判斷有沒有穿越中間:直線與中心的距離 <= r 且OAB和OBA都是銳角

2. 直線與中心的距離:算外積後(平行四邊形面積),再除掉底 = 高 

3. 判斷兩個向量是否形成銳角:內積後,正的為銳角,負的為鈍角

4. 切線的長度:OA^2 - R^2

5. 圓弧的角度:設切點是C, D,設高是M,
若BOA是銳角: (BOM-BOD-AOC),若BOA是鈍角: (180 - BOM - BOD - AOC)

沒有留言:

張貼留言