spoj 297
就是對距離進行二分找最大值 ....
#include <cstring> #include <cstdio> #include <algorithm> #include <vector> using namespace std;int a[100010]; int n,C; bool can(int lim) {int d = 0,w = 1;for(int i = 1; i < C; i++){while(a[w]-a[d] < lim && w < n)w++;if(w >= n)return false;d = w;}return true; } int main() {int t;scanf("%d",&t);while(t--){scanf("%d%d",&n,&C);for(int i = 0; i < n; i++){scanf("%d",&a[i]);}sort(a, a+n);int l = 1,r = a[n-1];while(l +1 < r){int mid = (l+r)/2;if(can(mid))l = mid;elser = mid;}printf("%d\n",l);}return 0; }總結
- 上一篇: java 代码压缩javascript_
- 下一篇: 最常用的65条正则表达式