新一屆智慧型車大賽在jl大學開始啦!比賽賽道可以看作是由n個矩形區域拼接而成(如下圖所示),每個矩形的邊都平行於座標軸,第i個矩形區域的左下角和右上角座標分別為(xi,1,yi,1)和(xi,2,yi,2)。 題目保證:xi,1
輸入的第一行包含乙個正整數n,表示組成賽道的矩形個數。 接下來n行描述這些矩形,其中第i行包含4個整數xi,1, yi,1, xi,2, yi,2,表示第i個矩形左下角和右上角座標分別為(xi,1, yi,1)和(xi,2, yi,2)。 接下來一行包含兩個整數xs, ys,表示起點座標。 接下來一行包含兩個整數xt, yt,表示終點座標。 接下來一行包含乙個實數v,表示智慧型車的速度。
僅輸出乙個實數,至少精確到小數點後第六位,為智慧型車完成比賽的最快時間。
對於每個測試點,如果你的輸出結果和參考結果相差不超過10^-6,該測試點得滿分,否則不得分。
1 12 2
203 4
1 11.0
2.41421356
有精度誤差,請不要提交
n<=2000,所輸入數字為絕對值小於40000的整數
day1
就是求乙個最短路,這條路肯定是從左到右的,我們可以用dp
來求。
我們先預處理出矩形之間的交點,顯然智慧型車只能經過起點、終點和這些點。
加上起點在終點左邊(如果不是交換一下位置) 然後o
(n2)
dp,在dp
過程中記錄一下當前點能夠向後到達的點的斜率範圍就可以了。 di
st[j
]=minmin
k≤ki
,j≤m
axk(
dist
[j],
dist
[i]+
di,j
)
#include
#include
#include
#include
#define y1 myi
using
namespace
std;
#define maxn 2000
int n,cnt,sx,sy,ex,ey,x1[maxn+10],x2[maxn+10],y1[maxn+10],y2[maxn+10];
double v,dist[maxn*2+10];
void read(int &x)
}}void read()
struct point
inline point(int x,int y):x(x),y(y)
}a[maxn*2+10];
void prepare()
a[++cnt]=point(ex,ey);
}inline
double sqr(double x)
void solve()
}}int main()
Noi2011 智慧型車比賽
假設s在t左邊,那麼只能往右或者上下走 f i 表示s到i點的最短路 f i min f j dis i,j i能看到j 判斷i能看到j就維護乙個上凸殼和乙個下凸殼 時間複雜度 o n 2 寫的有點長 include include include define n 2010 using names...
智慧型車比賽
noi2011 智慧型車比賽 program car const inf 1e49 type node record x,y longint end operator a node b node c node begin c.x a.x b.x c.y a.y b.y end operator a ...
聽說你是參加智慧型車比賽的?
問 我想問問,你們參加智慧型車競賽同學都是學什麼專業的?答 什麼專業都有,但基本上都和 自動化 有關係。像什麼電氣自動化 機械自動化 化工自動化 儀器儀表自動化 設計自動化。說白了,你只要是使用過word,做過ppt都算是學過辦公自動化。問 看來學自動化挺吃香的?答 那可不。你沒有聽說過,學了自動化...