DP NOI2011 智慧型車比賽

2021-07-14 20:27:36 字數 1422 閱讀 5362

新一屆智慧型車大賽在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都算是學過辦公自動化。問 看來學自動化挺吃香的?答 那可不。你沒有聽說過,學了自動化...