假设C(d)为满足所有牛之间的距离都不小于d。先对牛舍的位置排序,然后二分枚举d,寻找满足条件的d。
#include #include #include #include #include #include #include #include #include #include #define ll __int64 #define INF 0x3fffffff using namespace std; int n,m; int x[100005]; bool C(int d) { int num=1; int a=x[0]; int i=1; while(num 1) { int mid=(r+l)/2; if(C(mid)) l=mid; else r=mid; } cout< >n>>m; for(int i=0;i