Noi2011 智慧型車比賽

2021-09-06 15:43:05 字數 1865 閱讀 1318

假設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 namespace std;

struct pp(int _x,int _y)p operator-(const p&a)};

inline int cross(p a,p b)

inline double dis(p a,p b)

int n,i,x1[n],y1[n],x2[n],y2[n],xs,ys,xt,yt,st,en;

double v,f[n][4],ans,inf=1e9;

inline void call(int x,int y,int p,double&t)

tmp=p(x2[i],y1[i]);

if(cross(down-o,tmp-o)<=0)

tmp=p(x1[i],y2[i]);

if(cross(up-o,tmp-o)>=0)

tmp=p(x1[i],y1[i]);

if(cross(down-o,tmp-o)<=0)

} tmp=p(x2[st],y2[st]);

if(cross(up-o,tmp-o)>=0)

tmp=p(x2[st],y1[st]);

if(cross(down-o,tmp-o)<=0)

tmp=p(xs,ys);

if(cross(up-o,tmp-o)>=0&&cross(down-o,tmp-o)<=0)t=dis(o,tmp);//在up下邊或者重合 在down上邊或者重合

}inline void calr(int x,int y,int p,double&t)

tmp=p(x1[p],y1[p]);

if(cross(down-o,tmp-o)<=0)

for(int i=p-1;i>st;i--)

tmp=p(x2[i],y1[i]);

if(cross(down-o,tmp-o)<=0)

tmp=p(x1[i],y2[i]);

if(cross(up-o,tmp-o)>=0)

tmp=p(x1[i],y1[i]);

if(cross(down-o,tmp-o)<=0)

} tmp=p(x2[st],y2[st]);

if(cross(up-o,tmp-o)>=0)

tmp=p(x2[st],y1[st]);

if(cross(down-o,tmp-o)<=0)

tmp=p(xs,ys);

if(cross(up-o,tmp-o)>=0&&cross(down-o,tmp-o)<=0)t=dis(o,tmp);//在up下邊或者重合 在down上邊或者重合

}int main()

for(i=n;i;i--)if(x1[i]<=xt&&xt<=x2[i]&&y1[i]<=yt&&yt<=y2[i])

f[st][2]=dis(p(xs,ys),p(x2[st],y1[st]));

f[st][3]=dis(p(xs,ys),p(x2[st],y2[st]));

for(i=st+1;icall(x1[en],y1[en],en,f[en][0]);

call(x1[en],y2[en],en,f[en][1]);

calr(xt,yt,en,ans);

printf("%.10f",ans/v);

return 0;

}

NOI 2011 道路修建

在 w 星球上有 n 個國家。為了各自國家的經濟發展,他們決定在各個國家 之間建設雙向道路使得國家之間連通。但是每個國家的國王都很吝嗇,他們只願 意修建恰好 n 1 條雙向道路。每條道路的修建都要付出一定的費用,這個費用等於道路長度乘以道路兩端 的國家個數之差的絕對值。例如,在下圖中,虛線所示道路兩...

NOI2011 道路修建

time limit 10 sec memory limit 128 mb submit 3967 solved 1367 submit status discuss 在 w 星球上有 n 個國家。為了各自國家的經濟發展,他們決定在各個國家 之間建設雙向道路使得國家之間連通。但是每個國家的國王都很吝...

NOI2011 道路修建

在 w 星球上有 n 個國家。為了各自國家的經濟發展,他們決定在各個國家 之間建設雙向道路使得國家之間連通。但是每個國家的國王都很吝嗇,他們只願 意修建恰好 n 1 條雙向道路。每條道路的修建都要付出一定的費用,這個費用等於道路長度乘以道路兩端 的國家 個數之差的絕對值。例如,在下圖中,虛線所示道路...