Car的旅行路線

2022-03-19 22:38:23 字數 1644 閱讀 2014

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

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

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

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

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

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

13 10 1 3

1 1 1 3 3 1 30

2 5 7 4 5 2 1

8 6 8 8 11 6 3

47.5

題目不難,注意細節和一些幾何操作

1.建圖的邊權:兩點距離 * 費用

2.已知矩形任意三點座標,求第4點座標:通過勾股定理找出已知三點所構成三角形的斜邊,計為ab,則x[d]=x[a]+x[b]-x[c],y同理

3.由於最大點數不超過400,因此採用鄰接矩陣,跑floyd即可

4.點的編號:4 * (城市編號-1)+1/2/3/4

#define rg register

#include#include#includeusing namespace std;

const int n=410;

inline int read()

while(ch>='0'&&ch<='9')x=x*10+ch-'0',ch=getchar();

return x*w;

}int t,n,p,a,b;

int x[n],y[n];

double dist[n][n];

inline double minn(double a,double b)

inline void init()

inline int dis(int a,int b)//兩點間距離^2

inline void find(int s)//求第4點座標

inline void add(int s,int r)//加高鐵的邊,r為單位距離的費用

inline void add(int a,int b)//加飛機的邊,要取min(同乙個城市的點既可以坐高鐵也可以坐飛機)

}inline double getans(int a,int b)//起點城市和終點城市距離最小值

int main()

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

for(int j=1;j<=n;j++)

add(i,j);

for(int k=1;k<=4*n;k++)

for(int i=1;i<=4*n;i++)

for(int j=1;j<=4*n;j++)

dist[i][j]=minn(dist[i][j],dist[k][i]+dist[k][j]);//floyd

printf("%.1f\n",getans(4*(a-1),4*(b-1)));

} return 0;

}

Car的旅行路線

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

Car的旅行路線

題d car的旅行路線 時間限制 1 記憶體限制 128 mb 提交 1 解決 0 標籤標籤已被遮蔽 提交狀態 討論版 題目描述 又到暑假了,住在城市a的car想和朋友一起去城市b旅遊。她知道每個城市都有四個飛機場,分別位於乙個矩形的四個頂點上,同乙個城市中兩個機場之間有一 條筆直的高速鐵路,第i個...

演算法訓練 Car的旅行路線

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