又到暑假了,住在城市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應如何安排...