NOIP提高組2001 Car的旅行路線

2021-08-05 23:32:20 字數 1690 閱讀 6982

問題描述:

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

那麼car應如何安排到城市b的路線才能盡可能的節省花費呢?她發現這並不是乙個簡單的問題,於是她來向你請教。找出一條從城市a到b的旅遊路線,出發和到達城市中的機場可以任意選取,要求總的花費最少

輸入:

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

第二行有四個正整數s,t,a,b。其中s表示城市的個數,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個城市高速鐵路單位里程的**。

輸出:

輸出最小費用(結果保留兩位小數)

題解:

首先,輸入只有三個點,所以我們要求第四個點,這裡我們可以用迭代法不停迴圈,直到x1->x2,x2->x3這兩條直線垂直。那麼第四個點的座標就是x1-x2+x3這裡畫個圖就知道了。

然後直接建邊,跑最短路,由於資料範圍不大直接floyd就好了。

#include

#include

#include

#include

#include

#define inf 10000000

#define get(x) (x-1)*4+1

using

namespace

std;

int n;

int s,st,ed,ap;

double t;

struct nodesa[105];//第i個城市機場的x,y

double f[4050][4050];//從第i個機場到第j個機場的最短距離

void getfour(int x)//求第四個點

sa[x].x[3]=tx[0]-tx[1]+tx[2];

sa[x].y[3]=ty[0]-ty[1]+ty[2];

}double dis(int x1,int y1,int x2,int y2)

int main()

ap=s*4;

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

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

for(int i=1;i<=s;i++)}}

//求不同城市的機場間的距離

for(int i=1;i<=s;i++)}}

}//floyd求最短路

for(int k=1;k<=ap;k++)

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

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

double ans=inf;

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

for(int j=0;j<4;j++)

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

NOIP2001提高組 Car的旅行路線

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

noip2001提高組題解

今天繼續感動滾粗。第一次提交170分,不能多說。第一題 一元三次方程 明明是寒假講分治的時候做過的題居然還是wa而且只拿了60分,說明知識掌握實在不夠牢固。寒假做的是保留4位小數,原題只保留2位,又因為答案在 100,100 所以直接列舉 10000到10000即可。然後鑑於寒假的時候寫的二分,我就...

NOIP2001 Car的旅行線路

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