洛谷P1027 Car的旅行路線

2021-09-08 13:27:29 字數 2315 閱讀 4811

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

圖例(從上而下)

機場 高速鐵路

飛機航線

注意:圖中並沒有

標出所有的鐵路與航線。

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

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

輸入格式:

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

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

s(0接下來有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
直接算出各個機場之間的費用即可,然後用dijkstra做,這題floyed也可以過。

對於題目每個機場給三個點,我們需要用迭代法不斷交換三個點的位置:a-b-c --> b-c-a --> c-a-b使其滿足矩形關係。

判斷矩形我們可以用垂直關係。

1 #include 2 #include 3 #include 4 #include 5 #include 6

#define inf 10000000

7#define ctoa(x) (((x-1)<<2)+1)

8#define distance(x1,y1,x2,y2) ((double)sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2))) //

自定義巨集,開根號操作

9using

namespace

std;

10double node[4050][4050]; //

node[i][j]=i點到j點的最短距離

11double t; //

t=飛機航線的單價,t=鐵路線路的單價

12int tx[3],ty[3

],t;

13double ans=inf;

14struct

city

15ct[105]; //

ct[i].x[j]=第i個城市第j個機場橫座標,ct[i].y[j]=第i個城市第j個機場縱座標

19void getfour(int c) //

獲取第c個城市第四個機場的座標

20

29 ct[c].x[3]=tx[0]-tx[1]+tx[2

];

30 ct[c].y[3]=ty[0]-ty[1]+ty[2

];

31}

32int min(int a1,int

b1)

33

37int

main()

38 //

注意出發點和目的地在同一城市的情況,直接輸出0.0

46int airport=s<<2; //

airport=機場數量

47for(i=1;i<=airport;i++)

48

52for(i=1;i<=s;i++)

53

64}

65for(i=1;i<=s;i++)

66

75}

76}

77//

floyd

78for(k=1;k<=airport;k++)

79

86}

87}

88for(i=0;i<4;i++)

89

93 cout

94}

95return

0;

96 }

洛谷P1027(Car的旅行路線)

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

洛谷 P1027 Car的旅行路線

又到暑假了,住在城市 aa 的 carcar 想和朋友一起去城市 bb 旅遊。她知道每個城市都有 44 個飛機場,分別位於乙個矩形的 44 個頂點上,同乙個城市中 22 個機場之間有 11 條筆直的高速鐵路,第 ii 個城市中高速鐵路了的單位里程 為 t iti 任意兩個不同城市的機場之間均有航線,...

luogu1027 Car的旅行路線

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