NOIP 2001 Car的旅行路線

2021-07-24 00:26:57 字數 1889 閱讀 1272

題目描述

又到暑假了,住在城市a的car想和朋友一起去城市b旅遊。她知道每個城市都有四個飛機場,分別位於乙個矩形的四個頂點上,同乙個城市中兩個機場之間有一條筆直的高速鐵路,第i個城市中高速鐵路了的單位里程**為ti,任意兩個不同城市的機場之間均有航線,所有航線單位里程的**均為t。

圖例(從上而下)

機場 高速鐵路

飛機航線

注意:圖中並沒有

標出所有的鐵路與航線。

那麼car應如何安排到城市b的路線才能盡可能的節省花費呢?她發現這並不是乙個簡單的問題,於是她來向你請教。

找出一條從城市a到b的旅遊路線,出發和到達城市中的機場可以任意選取,要求總的花費最少。

輸入輸出格式

輸入格式:

第一行為乙個正整數n(0<=n<=10),表示有n組測試資料。

每組的第一行有四個正整數s,t,a,b。

s(0 < s <=100)表示城市的個數,t表示飛機單位里程的**,a,b分別為城市a,b的序號,(1<=a,b<=s)。

接下來有s行,其中第i行均有7個正整數xi1,yi1,xi2,yi2,xi3,yi3,ti,這當中的(xi1,yi1),(xi2,yi2),(xi3,yi3)分別是第i個城市中任意三個機場的座標,t i為第i個城市高速鐵路單位里程的**。

輸出格式:

共有n行,每行乙個資料對應測試資料。 保留一位小數

輸入輸出樣例

輸入樣例#1:

1 3 10 1 3

1 1 1 3 3 1 30

2 5 7 4 5 2 1

8 6 8 8 11 6 3

輸出樣例#1:

47.5

【分析】

這題還考向量…

也就是矩形的構建

用 floyed 即可

【**】

//noip 2001 car的旅行路線 

#include

#include

#include

#include

#include

#define mp make_pair

#define m(a) memset(a,0,sizeof a)

#define fo(i,j,k) for(i=j;i<=k;i++)

using

namespace

std;

const

double inf=1e8;

const

int mxn=105;

int n,s,t,a,b;

intmap[10005][2],t[mxn];

double dis[mxn][mxn];

inline

double calc(int j1,int j2,int mul)

inline

double calc(int j1,int j2)

int main()

num=s*4;

fo(k,1,num)

fo(i,1,num)

fo(j,1,num)

if(i!=j && j!=k && i!=k)

dis[i][j]=min(dis[i][j],dis[i][k]+dis[k][j]);

fo(i,(a-1)*4+1,(a-1)*4+4)

fo(j,(b-1)*4+1,(b-1)*4+4)

if(i!=j)

ans=min(ans,dis[i][j]);

if(a==b) ans=0.0;

printf("%.1lf\n",ans);

}return

0;}

最短路 NOIP2001 CAR的旅行路線

第四題 car的旅行路線 p4.pas c cpp p4.in p4.out 問題描述 又到暑假了,住在城市a的car想和朋友一起去城市b旅遊。她知道每個城市都有四個飛機場,分別位於乙個矩形的四個頂點上,同乙個城市中兩個機場之間有一條筆直的高速鐵路,第i個城市中高速鐵路了的單位里程 為ti,任意兩個...

NOIP2001 Car的旅行線路

題目描述 點選此處 解題思路 平行四邊形相對頂點的橫座標 縱座標之和分別相等。將所有機場的座標都算出來之後,再根據題目描述連邊,從出發地的四個機場或到達地的四個機場分別做單源點最短路。實現 include include include include include include using n...

NOIP提高組2001 Car的旅行路線

問題描述 又到暑假了,住在城市a的car想和朋友一起去城市b旅遊。她知道每個城市都有四個飛機場,分別位於乙個矩形的四個頂點上,同乙個城市中兩個機場之間有一條筆直的高速鐵路,第i個城市中高速鐵路了的單位里程 為ti,任意兩個不同城市的機場之間均有航線,所有航線單位里程的 均為t。那麼car應如何安排到...