2014百度之星複賽解題報告複賽 Race

2022-08-10 19:48:21 字數 2000 閱讀 8174

race

時間限制:10s  記憶體限制:64mb

問題描述

度度熊最近參加了一場勁跑比賽,但是這個勁跑比賽的規則比較特殊。比賽方預先在地上畫了一些橫線和豎線(可以認為這些線為無限長的直線),要求選手從指定的位置出發,在最短時間內按照規定的順序經過所有的直線(只要到達直線上的任意一點即為經過)。為了幫助度度熊獲勝,你能為他規劃一條最短的線路嗎?

輸入第一行為t,表示輸入資料組數。

下面t組資料。每組資料中:

第一行為乙個整數n,表示有n條直線。接下來n行,每行包含兩個整數,表示一條直線。如果直線為豎線,則第乙個整數為0,第二個整數為直線的橫座標x。如果直線為橫線,則第乙個整數為1,第二個整數為直線的縱座標y。度度熊將從平面的原點出發。

輸出對第i組資料,輸出

case #i:

然後輸出乙個實數,表示從原點出發按輸入順序經過所有直線的最短路徑的長度。保留到小數點後3位。

限制條件

1<=t<=10

1<=n<=10^6

-500<=x,y<=500

樣例輸入13

0 11 1

0 2樣例輸出

case #1:

2.236

提示:度度熊需要按照規定的順序經過所有的直線。如果度度熊不按照順序經過直線,那麼提前經過的直線是不算數的。例如,假設度度熊需要按順序經過直線1和直線2,那麼如果度度熊在經過直線2之前經過了直線1,這是不算數的,度度熊仍然需要在經過直線2後再次經過直線1。但是度度熊可以經過直線1和直線2的交叉點而同時都算數。

解題報告:

解題**:

#include #include #include using namespace std;

const int max_n = 1000000;

struct point

point(int x_, int y_)

};int n;

int dirs[max_n];

int lines[max_n];

inline long long cross_product(point a, point b)

inline long long cross_product(point a, point b, point c)

inline double distance(point a, point b)

void preprocess_lines() ;

int lastrawlines[2] = ;

for (int i = 0; i < n; i++)

}double solve()

lstack[ltail++] = pos;

while (lhead + 2 == ltail && rhead + 2 <= rtail && cross_product(lstack[lhead], pos, rstack[rhead + 1]) >= 0)

}if (dirs[i] == 0 && dirs[i - 1] == 1)

rstack[rtail++] = pos;

while (rhead + 2 == rtail && lhead + 2 <= ltail && cross_product(rstack[rhead], pos, lstack[lhead + 1]) <= 0) }}

if (dirs[n - 1] == 1)

result += lines[n - 1] - lstack[ltail - 1].y;

}if (dirs[n - 1] == 0)

result += lines[n - 1] - rstack[rtail - 1].x;

}return result;

}int main()

preprocess_lines();

double ans = solve();

printf("case #%d:\n", tt);

printf("%.3f\n", ans);

}return 0;

}

百度之星複賽題解

problem description 眾所周知,度度熊非常喜歡數字。它最近在學習小學算術,第一次發現這個世界上居然存在兩位數,三位數 甚至n位數!但是這回的算術題可並不簡單,由於含有表示bomb的 號,度度熊稱之為 arithmetic of bomb。bomb number中的bomb,也就是 ...

2014百度之星資格賽解題報告 Labyrinth

labyrinth 時間限制 1s 記憶體限制 65536k 問題描述 輸入輸入的第一行是乙個整數t t 200 表示共有t組資料。每組資料的第一行輸入兩個正整數m,n m 100,n 100 接下來的m行,每行n個整數,分別代表相應格仔中能得到金幣的數量,每個整數都大於等於 100且小於等於100...

2016 百度之星 複賽 拍照

小明在旅遊的路上看到了一條美麗的河,河上有許多船隻,有的船隻向左航行,有的船隻向右航行。小明希望拍下這一美麗的風景,並且把盡可能多的船隻都完整地拍到一張 中。小明位於河的邊上,並且可以在河邊的任意位置進行拍照,照相機的視野恰好為90度角,只能以垂直於河邊的方向進行拍照。河上的船隻全都可看作是平行於河...