問題 H 小k的簡單問題

2022-03-04 23:26:33 字數 1329 閱讀 3869

時間限制: 1 sec  記憶體限制: 128 mb

提交: 107  解決: 57

[提交] [狀態] [命題人:jsu_admin]

題目描述

地圖上有n個村莊,小k每個月需要往每個村莊運送數量不等的糧食,運送糧食到任意乙個村莊需要消耗的費用為距離的平方乘以糧食的重量,現在小k打算在地圖上建立糧食基地,請問將基地建在哪個地方才能讓小k每個月消耗的費用最少?

輸入第一行包含乙個整數 t,表示有 t組測試資料。

接下來依次描述 t 組測試資料。對於每組測試資料:

第一行為整數 n,表示有n個村莊。

接下來 n 行,每行三個整數x,y,v,前兩整數個為村莊的座標,後面乙個整數為該村莊每個月需要的糧食重量。0輸出

小k建立糧食基地的座標(保留兩位小數)

樣例輸入 copy

1

3167 -100 44

78 262 21

-245 -27 1

樣例輸出 copy

132.44 16.29

已知每個村莊的位置 xi,yi,以及需要運送的糧食重量 vi,設基地的位置在 x,y,那麼小 k 運送糧食到任意乙個村莊消耗的費用為(x-xi)*(x-xi)*vi+(y-yi)*(y-yi)*vi,由此可只 x 坐 標和 y 座標可以分開來算,將所有消耗相加起來得到乙個關於 x 的方程,a*x*x-b*x+c, 可轉化為由此可得出當 x = b/(2*a)時消耗最小,同理可得出 y 座標的值。

1 #include2 #include3

using

namespace

std;

4const

int maxn = 1010;5

intmain()

21 sort(a+1,a+n+1

);22 sort(b+1,b+n+1

);23

//double l_1 = a[n],r_1 = a[1];

24//

double l_2 = b[n],r_2 = b[1];

25//

double sum = 0;

26//

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

27//

30//

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

31//

41//}42

43 printf("

%.2f %.2f\n

",z/v,x/v);

44}

45 }

view code

選擇問題 第k小元素

問題描述 在乙個無序的序列t中,尋找第k小的元素 分析 將序列t進行公升序排列,下標為k的元素即為第k小的數。下標從1開始 考慮到快速排序的過程,每次進行一次partition 函式,就將比軸線值小的數放在軸線左邊,比軸線大的值放在軸線右邊,即可確定乙個軸線值的下標位置s。下面分三種情況 1 s k...

快速排序 第K大 第K小的問題

這裡的快排 是一種稍微改進的快排,即減少一些不必要的交換次數。quick sort void quick sort int s,int e a s a i 此時 i j 為最後找到的最小的數,需要放在樞軸處 即位置s a i x quick sort s,i 1 quick sort i 1,e 第...

區間第k小類問題總結

剛碰到區間第k小的問題的時候只會區間sort,後來才掌握了一些解決此類問題的方法。區間第k小有的題目帶修改有的不帶修改,不論是什麼,都有對應的解決方法。1.我們可以分塊。分成根號n塊,塊內排序。對於每次查詢l,r我們二分答案 二分乙個值,統計區間內比他小的個數 對於不完整的區間,我們掃一遍統計,對於...