POJ 2456 Aggressive cows
二分答案+验证。
#include<cstdio> #include<cstring> #include<cmath> #include<vector> #include<queue> #include<algorithm> using namespace std; const int maxn=100000+10; long long x[maxn]; int n,c; bool check(long long len) { int pre=1; for(int i=2;i<=c;i++) { bool fail=1; for(int j=pre+1;j<=n;j++) { if(x[j]-x[pre]>=len) { fail=0; pre=j; break; } } if(fail) return 0; } return 1; } int main() { scanf("%d%d",&n,&c); for(int i=1;i<=n;i++) scanf("%lld",&x[i]); sort(x+1,x+1+n); long long l=1,r=1000000000,ans=0;; while(l<=r) { long long mid=(l+r)/2; if(check(mid)) ans=mid,l=mid+1; else r=mid-1; } printf("%lld\n",ans); return 0; }