題目描述:
給出n個位置(數軸上的座標值),從中選出k個,讓這k個位置相鄰兩個之間的距離(相鄰位置座標的差值)盡可能的大(盡可能大的意思是這k-1個距離的最小值盡量大)。輸出這個最大的最小值。
樣例解釋:選位置:1 5 9。
輸入
第一行:2個數n和k(2 <= n <= 100000, 2 <= k <= 10000, k <= n)
後面n行:每行乙個數pi,表示具體位置(0 <= pi <= 10^9),位置是無序的。
輸出
輸出乙個數,對應最大的距離。
輸入樣例
5 3135
79輸出樣例
4解題思路:
其實跟切木頭那題是一樣的,首先明確要二分誰,我們這題是要二分距離的長度,如果這個距離對應的段數+1(也就變成了個數),如果滿足》=k,我們就說他們是合法的,那麼此時我們就去考慮,是否還能將這個距離的大小二分的更大
核心**:
完整**:
#include
using
namespace std;
long
long n,k,a[
100010
],tot;
intchoose
(int x)
return tot;
}int
main()
cout << l << endl;
return0;
}
2654 最小距離最大
問題 給出n個位置 數軸上的座標值 從中選出k個,讓這k個位置相鄰兩個之間的距離 相鄰位置座標的差值 盡可能的大 盡可能大的意思是這k 1個距離的最小值盡量大 輸出這個最大的最小值。樣例解釋 選位置 1 5 9。輸入 第一行 2個數n和k 2 n 100000,2 k 10000,k n 後面n行 ...
最小距離最大值問題
def check2 a,m,x k,c 0,0 for i in range 1,len a if a i a k x 當前距離小於x,刪除元素a i c 1 else 當前距離不小於x,更新左邊界 k i return c m def distance a,m left,right,ans 1,...
聚類分析 最大最小距離法練習
資料集 0 00 1 4 44 5 5 45 5 1 0 用最大最小距離法進行聚類分析 from fileutil import fileutil from mathutil import mathutil import math x fileutil.openfile 2 1.txt 資料 z 聚...