ALGO-162——Airport Configuration
生活随笔
收集整理的這篇文章主要介紹了
ALGO-162——Airport Configuration
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
問(wèn)題描述: ACM機(jī)場(chǎng)是一個(gè)本地機(jī)場(chǎng),對(duì)于大多數(shù)人來(lái)說(shuō),機(jī)場(chǎng)不是他們的終點(diǎn)或起點(diǎn),而是中轉(zhuǎn)站。機(jī)場(chǎng)有一個(gè)規(guī)劃圖。到達(dá)的大門在機(jī)場(chǎng)的北邊(相當(dāng)于空格)。出發(fā)的大門在機(jī)場(chǎng)的南邊(也相當(dāng)于空格)。兩個(gè)正對(duì)著的大門距離相當(dāng)于大門間的距離。每一個(gè)到達(dá)的大門只對(duì)應(yīng)一個(gè)城市。每一個(gè)出發(fā)的大門也是這樣。乘客到達(dá)的大門對(duì)應(yīng)他們的起始城市,而出發(fā)大門對(duì)應(yīng)他們的目標(biāo)城市。因?yàn)檫@個(gè)問(wèn)題,我們只需考慮轉(zhuǎn)機(jī)的乘客。
轉(zhuǎn)機(jī)的乘客會(huì)產(chǎn)生機(jī)場(chǎng)的交通堵塞。我們已經(jīng)知道某兩個(gè)城市之間的平均客流量。用這些信息,有可能能降低交通堵塞。例如,Cx城到Cy城的客流量大,就可以將他們安排得很近,甚至是對(duì)位。
因?yàn)榛▓@和商店無(wú)法穿越,所以到達(dá)門G1和出發(fā)們G3(見(jiàn)圖)的距離為1+2=3。
你需要計(jì)算幾個(gè)方案的客流指數(shù)。兩個(gè)大門間的客流指數(shù)等于人數(shù)乘以距離。而總的客流指數(shù)就是所有門之間的客流指數(shù)之和。
輸入格式 輸入文件有多組測(cè)試數(shù)據(jù)。
最后一組只有一個(gè)0。
每組測(cè)試數(shù)據(jù)的輸入有兩部分。先是客流數(shù)據(jù),之后是機(jī)場(chǎng)布局。
數(shù)據(jù)開(kāi)始時(shí)一個(gè)n(1<n<25),表示城市數(shù)。接下來(lái)n行,每行表示一個(gè)城市的數(shù)據(jù),第i行先是一個(gè)整數(shù),表示起始城市,再一個(gè)1到n的整數(shù)k,表示目標(biāo)城市數(shù),k對(duì)整數(shù),每對(duì)描述一個(gè)目標(biāo)城市,第一個(gè)數(shù)是城市編號(hào)j,然后是乘客數(shù)目(最多500)從i到j(luò)的人數(shù)。
機(jī)場(chǎng)布局部分包括1到20個(gè)方案。用一個(gè)0結(jié)束。
一個(gè)方案包括3行。第一行一個(gè)數(shù)表示編號(hào),第二行是1-n的一個(gè)排列,描述到達(dá)門對(duì)應(yīng)的城市的排列,第三行用同樣的方式描述出發(fā)大門。 輸出格式 對(duì)于每個(gè)測(cè)試數(shù)據(jù),輸出包括一個(gè)表格,表示方案編號(hào)和客流指數(shù),按照客流指數(shù)升序輸出。若客流指數(shù)相同,則編號(hào)小的排在前面。見(jiàn)樣例。注意方案編號(hào)右對(duì)齊,而客流指數(shù)左對(duì)齊。(樣例輸出前面4個(gè)空格,后面9個(gè)空格,然后沒(méi)有空格,詳見(jiàn)未格式化的試題。 樣例輸入 3
1 2 2 10 3 15
2 1 3 10
3 2 1 12 2 20
1
1 2 3
2 3 1
2
2 3 1
3 2 1
0
2
1 1 2 100
2 1 1 200
1
1 2
1 2
2
1 2
2 1
0
0 樣例輸出 Configuration Load
2 119
1 122
Configuration Load
2 300
1 600 問(wèn)題分析: 模擬題,沒(méi)啥分析 代碼: 1 #include<iostream> 2 #include<cstring> 3 #include<cmath> 4 #include<algorithm> 5 using namespace std; 6 7 int n; //城市數(shù)量 8 int city[26][26]; //城市之間人數(shù)矩陣 9 int cityFrom[26]; //到達(dá)的門分布 10 int cityTo[26]; //去向的門分布 11 int ans[21]; //機(jī)場(chǎng)分布方案對(duì)應(yīng)的客流指數(shù) 12 int arrange[21]; //機(jī)場(chǎng)分布方案的編號(hào)輸出的順序 13 int Count; //測(cè)試的機(jī)場(chǎng)分布的數(shù)量 14 15 void Sort(){ 16 int temp; 17 for(int i=1;i<=Count;i++){ 18 for(int j=1;j<=Count-i;j++){ 19 if(ans[j]>ans[j+1]){ 20 temp=ans[j]; 21 ans[j]=ans[j+1]; 22 ans[j+1]=temp; 23 temp=arrange[j]; 24 arrange[j]=arrange[j+1]; 25 arrange[j+1]=temp; 26 } 27 } 28 } 29 } 30 31 int main(){ 32 while(cin>>n&&n){ 33 for(int i=1;i<=20;i++){ 34 arrange[i]=i; 35 } 36 memset(city,0,sizeof(city)); 37 memset(cityFrom,0,sizeof(cityFrom)); 38 memset(cityTo,0,sizeof(cityTo)); 39 memset(ans,0,sizeof(ans)); 40 int from,to; //出發(fā)城市編號(hào)、目的地城市編號(hào) 41 int m; //每行第3個(gè)數(shù)字,目的地城市數(shù)量 42 for(int i=1;i<=n;i++){ 43 cin>>from; 44 cin>>m; 45 for(int j=1;j<=m;j++){ 46 cin>>to; 47 cin>>city[from][to]; 48 } 49 } 50 int c; //機(jī)場(chǎng)分布編號(hào) 51 Count=0; 52 while(cin>>c&&c){ 53 for(int i=1;i<=n;i++){ 54 cin>>cityFrom[i]; 55 } 56 for(int i=1;i<=n;i++){ 57 cin>>cityTo[i]; 58 } 59 for(int i=1;i<=n;i++){ 60 for(int j=1;j<=n;j++){ 61 if(city[cityFrom[i]][cityTo[j]]){ 62 ans[c]+=city[cityFrom[i]][cityTo[j]]*(1+abs(i-j)); 63 } 64 } 65 } 66 Count++; 67 } 68 cout<<"Configuration Load"<<endl; 69 Sort(); //排序 70 for(int i=1;i<=Count;i++){ 71 cout<<arrange[i]<<" "<<ans[i]<<endl; 72 } 73 } 74 return 0; 75 }
轉(zhuǎn)機(jī)的乘客會(huì)產(chǎn)生機(jī)場(chǎng)的交通堵塞。我們已經(jīng)知道某兩個(gè)城市之間的平均客流量。用這些信息,有可能能降低交通堵塞。例如,Cx城到Cy城的客流量大,就可以將他們安排得很近,甚至是對(duì)位。
因?yàn)榛▓@和商店無(wú)法穿越,所以到達(dá)門G1和出發(fā)們G3(見(jiàn)圖)的距離為1+2=3。
你需要計(jì)算幾個(gè)方案的客流指數(shù)。兩個(gè)大門間的客流指數(shù)等于人數(shù)乘以距離。而總的客流指數(shù)就是所有門之間的客流指數(shù)之和。
輸入格式 輸入文件有多組測(cè)試數(shù)據(jù)。
最后一組只有一個(gè)0。
每組測(cè)試數(shù)據(jù)的輸入有兩部分。先是客流數(shù)據(jù),之后是機(jī)場(chǎng)布局。
數(shù)據(jù)開(kāi)始時(shí)一個(gè)n(1<n<25),表示城市數(shù)。接下來(lái)n行,每行表示一個(gè)城市的數(shù)據(jù),第i行先是一個(gè)整數(shù),表示起始城市,再一個(gè)1到n的整數(shù)k,表示目標(biāo)城市數(shù),k對(duì)整數(shù),每對(duì)描述一個(gè)目標(biāo)城市,第一個(gè)數(shù)是城市編號(hào)j,然后是乘客數(shù)目(最多500)從i到j(luò)的人數(shù)。
機(jī)場(chǎng)布局部分包括1到20個(gè)方案。用一個(gè)0結(jié)束。
一個(gè)方案包括3行。第一行一個(gè)數(shù)表示編號(hào),第二行是1-n的一個(gè)排列,描述到達(dá)門對(duì)應(yīng)的城市的排列,第三行用同樣的方式描述出發(fā)大門。 輸出格式 對(duì)于每個(gè)測(cè)試數(shù)據(jù),輸出包括一個(gè)表格,表示方案編號(hào)和客流指數(shù),按照客流指數(shù)升序輸出。若客流指數(shù)相同,則編號(hào)小的排在前面。見(jiàn)樣例。注意方案編號(hào)右對(duì)齊,而客流指數(shù)左對(duì)齊。(樣例輸出前面4個(gè)空格,后面9個(gè)空格,然后沒(méi)有空格,詳見(jiàn)未格式化的試題。 樣例輸入 3
1 2 2 10 3 15
2 1 3 10
3 2 1 12 2 20
1
1 2 3
2 3 1
2
2 3 1
3 2 1
0
2
1 1 2 100
2 1 1 200
1
1 2
1 2
2
1 2
2 1
0
0 樣例輸出 Configuration Load
2 119
1 122
Configuration Load
2 300
1 600 問(wèn)題分析: 模擬題,沒(méi)啥分析 代碼: 1 #include<iostream> 2 #include<cstring> 3 #include<cmath> 4 #include<algorithm> 5 using namespace std; 6 7 int n; //城市數(shù)量 8 int city[26][26]; //城市之間人數(shù)矩陣 9 int cityFrom[26]; //到達(dá)的門分布 10 int cityTo[26]; //去向的門分布 11 int ans[21]; //機(jī)場(chǎng)分布方案對(duì)應(yīng)的客流指數(shù) 12 int arrange[21]; //機(jī)場(chǎng)分布方案的編號(hào)輸出的順序 13 int Count; //測(cè)試的機(jī)場(chǎng)分布的數(shù)量 14 15 void Sort(){ 16 int temp; 17 for(int i=1;i<=Count;i++){ 18 for(int j=1;j<=Count-i;j++){ 19 if(ans[j]>ans[j+1]){ 20 temp=ans[j]; 21 ans[j]=ans[j+1]; 22 ans[j+1]=temp; 23 temp=arrange[j]; 24 arrange[j]=arrange[j+1]; 25 arrange[j+1]=temp; 26 } 27 } 28 } 29 } 30 31 int main(){ 32 while(cin>>n&&n){ 33 for(int i=1;i<=20;i++){ 34 arrange[i]=i; 35 } 36 memset(city,0,sizeof(city)); 37 memset(cityFrom,0,sizeof(cityFrom)); 38 memset(cityTo,0,sizeof(cityTo)); 39 memset(ans,0,sizeof(ans)); 40 int from,to; //出發(fā)城市編號(hào)、目的地城市編號(hào) 41 int m; //每行第3個(gè)數(shù)字,目的地城市數(shù)量 42 for(int i=1;i<=n;i++){ 43 cin>>from; 44 cin>>m; 45 for(int j=1;j<=m;j++){ 46 cin>>to; 47 cin>>city[from][to]; 48 } 49 } 50 int c; //機(jī)場(chǎng)分布編號(hào) 51 Count=0; 52 while(cin>>c&&c){ 53 for(int i=1;i<=n;i++){ 54 cin>>cityFrom[i]; 55 } 56 for(int i=1;i<=n;i++){ 57 cin>>cityTo[i]; 58 } 59 for(int i=1;i<=n;i++){ 60 for(int j=1;j<=n;j++){ 61 if(city[cityFrom[i]][cityTo[j]]){ 62 ans[c]+=city[cityFrom[i]][cityTo[j]]*(1+abs(i-j)); 63 } 64 } 65 } 66 Count++; 67 } 68 cout<<"Configuration Load"<<endl; 69 Sort(); //排序 70 for(int i=1;i<=Count;i++){ 71 cout<<arrange[i]<<" "<<ans[i]<<endl; 72 } 73 } 74 return 0; 75 }
?
轉(zhuǎn)載于:https://www.cnblogs.com/orangecyh/p/10268829.html
總結(jié)
以上是生活随笔為你收集整理的ALGO-162——Airport Configuration的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: java 图形绘制_Java Graph
- 下一篇: 接口(Api)版本号命名规则