高階資料結構 最近餐館

2021-10-01 13:41:21 字數 1903 閱讀 8460

3:最近餐館

檢視提交統計提問

總時間限制: 5000ms 記憶體限制: 98304kb

描述每到飯點,就又到了一日幾度的小l糾結去哪吃飯的時候了。因為有太多太多好吃的地方可以去吃,而小l又比較懶不想走太遠,所以小l會先找到距離他最近的m家餐館然後再做篩選。

小l現在所在的位置和每家餐館的位置用同一笛卡爾座標系中的點表示,而點與點之間的距離為歐幾里得距離,對於點p = (p1, p2,…, pn)和點q = (q1,q2,…, qn),兩者的距離定義如下

現給出在k維空間中小l所處的位置的座標以及n個餐館的位置,請幫助小l完成他的需求。

輸入第1行包含兩個整數n和k,1≤n≤5000,1≤k≤5。

接下來n行,每行包含k個數,表示每個餐館的座標。

接下來1行,包含乙個數t,1≤t≤10000,表示小l詢問的數目。

每次詢問包括兩行。第1行包含k個數,表示小l所在的座標。第2行包含乙個數m,1≤m≤10。

所有座標值不會超過10000。

輸入資料報含多組資料,請逐個處理直到檔案結束。

輸出對於每乙個詢問,輸出m+1行:

第1行輸出:」the closest m points are:」,其中m在輸入中給出。

接下來m行輸出距離最近的m家餐館的座標,按照由近及遠的順序輸出。

輸出資料保證答案唯一。保證從小l的位置到最近的m+1家餐館位置各不相同,這說明如下輸入資料:

2 21 1

3 31

2 21

不會存在。

樣例輸入

3 21 1

1 33 4

22 3

22 3

1樣例輸出

the closest 2 points are:

1 33 4

the closest 1 points are:

1 3注意stl的靈活使用,上一題學到了優先佇列的定義與排序,這次學到了vector> 的使用,和partial_sort(qmin.begin(), qmin.begin() + m, qmin.end());的使用

注意輸入資料有多組,否則會wa

#include

#include

#include

#include

#include

#include

using

namespace std;

typedef pair<

long

long

,int

> ele;

int cnt[

5002][

6];int

main()

}int t;

cin >> t;

int s[6]

;for

(int i =

0; i < t; i++

)int m;

cin >> m;

vector qmin;

for(

int j =

0; j < n; j++

) qmin.

push_back

(ele

(ans, j));

}printf

("the closest %d points are:\n"

, m)

;partial_sort

(qmin.

begin()

, qmin.

begin()

+ m, qmin.

end())

;for

(int ll =

0; ll < m; ll++

) cout << endl;}}

}return0;

}

高階資料結構

struct treenode treenode是經典的二叉樹節點,在資料的序列化和反序列按照層遍歷來處理的。以上二叉樹會被序列化為 1 root節點1,是第一層 2,3 然後第二層是2,3 4,第三層分別是2節點的兩個孩子節點空,用 來表示,然後3節點的左孩子為4,右孩子節點為 5 第四層4節點的...

高階資料結構

與普通佇列的區別 1.保證每次取出的元素時佇列中優先順序最高的 2.優先級別可自定義 場景 從雜亂無序的資料中按照一定的順序 或者優先順序 篩選資料 本質 1.二叉堆的結構,堆在英文裡叫binary heep 2.利用乙個陣列結構來實現完全二叉樹 特性 1.陣列裡的第乙個元素array 0 擁有最高...

高階資料結構c

動態查詢字首和 vector int bits 放樹狀陣列 int n 原陣列的大小 1表示樹狀陣列的大小,為什麼要 1呢,因為樹狀陣列多了乙個前0個數的和 intquery int x void add int i,int x 功能比樹狀陣列多一點 const int e 100006 struc...