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...