程式設計開發練習習題 規避

2022-09-22 23:09:25 字數 1493 閱讀 2376

題目描述

2014 年7 月17 日,馬來西亞航空mh17 班機執飛阿姆斯特丹史基浦機場飛往吉隆坡國際機場航線時,在烏克蘭靠近俄羅斯邊界33,000 英呎高空疑受到9k37 山毛櫸地對空飛彈擊落墜毀。事件發生後,漢莎航空、法國航空、土耳其航空、俄羅斯洲際航空、達美航空、英國航空、俄羅斯航空、印度航空、捷特航空和荷蘭皇家航空開始禁止班機進入烏克蘭東部或全境領空範圍。美國航空公司的班機禁止在烏克蘭境內飛行,同時utair 航空、義大利航空和維珍航空也宣布他們的班機將會重新規劃航行的路線。英國交通部已經要求該國的班機不要進入烏克蘭領空範圍。中國民用航空局已要求國內航空公司所有飛越烏克蘭的航班繞飛。

作為相關負責人,你需要根據實際情況規劃航線規避不安全地區,包括戰爭區域、危險天氣、火山灰和外星人入侵……等。每個不安全區域被標記為乙個凸多邊形,每個凸多邊形相離,你需要規劃一條從指定起點到指定終點的航線,要求航線不得進入不安全區域,輸出它的最短長度。為了你的方便,起點和終點都是多邊形的頂點。

輸入第一行乙個整數n 表示不安全區域的數目。

接下來共n 組描述,分別對應每個區域,首先輸入乙個空行,接下來第乙個數num 表示該區域頂點數,接下來共num 個整數對按逆時針方向描述每個頂點。

在描述起點終點前輸入空行,然後兩個整數s 和t 描述起點和終點。起點為之前讀入的總第s 個頂點,終點同理。

輸出一行共乙個數表示最短長度,保留4 位小數。

樣例輸入24

0 01 0

1 10 1

42 2

3 23 3

2 31 7

樣例輸出

4.8284

提示【資料規模和約定】

m 表示頂點總數

對於10%的資料,n=1。

對於30%的資料,n<=2。

對於50%的資料,n<=10,m<=50。

對於100%的資料,n<=100,m<=300,-32768<=讀入的座標<=32767。

題解飛機肯定是乙個頂點飛向另乙個頂點,連邊,判斷是否經過凸包內部(用向量叉積),跑最短路。複雜度m^3

**#include

#define pa pair

#define inf 10000000

using namespace std;

inline int read()

while (ch>='0'&&ch<='9')

return x*f;

} double dis[305],f[305][305];

int n,cnt,num[105],s,t,sum[105];

struct nodea[305];

bool vis[305];

double dis(node a,node b)

double product(node a,node b)

bool pd(node p1,node p2,node q1,node q2)

bool check(node x,node y)}}

}int main()

for (int i=1;i

程式設計開發練習習題 Reverse Pairs

程式設計開發練習習題 reverse pairs。這道題很明顯是一般逆序對的變形,我們同樣可以使用歸併排序來解決。對於已經排序的 a 1 n 和 b 1 m 歸併。我們在歸併的同時,統計滿足題目要求的逆序對的個數,如果存在 a i 2 b j 就此有j對逆序對 a i b j a i b j 1 a...

指標練習習題

1 int ref ref是8的位址,ref 1是4的位址,而 ref不是合法的c表示式,因為ref是常量而不是變數。2 乙個包含20個指向char的指標的陣列 char psa 20 乙個指向陣列的指標,其中陣列由20個char值構成 char pstr 20 3 定義乙個包含100個int值的陣...

python練習習題

一 使用if else語句 隨堂練習 使用if else語句 1 年齡在 22到35之間 列印 可以結婚 在其他年齡段 列印 拖出去槍斃 2 年齡在70歲以上 或者 患有老年痴呆 列印不能開車,否則可以開車 練習一 age int input 請輸入年齡 if 22 age 35 print f 你...