题目大意
给出N间在一条线上的屋子,要求我们去计算让牛在最大化离最小的距离。(题目链接不能复制)
思路
1. 由于这道题需要计算在固定的范围内求出最大的距离。因此这类思维题可以想到二分的最大化最小值。
2.运用最大化最小值,需要找到中间值,再让左右端与中间值进行比较,从而去确定牛舍的位置,最后再计算距离。
代码
#include<iostream>
#include<stdio.h>
#include<fstream>
#include<algorithm>
#include<cmath>
#include<deque>
#include<vector>
#include<queue>
#include<string>
#include<cstring>
#include<map>
#include<stack>
#include<set>
using namespace std;
const int N=1e6+10;//定义一个数组
int n,m,a[N];//共有n个牛舍,需要对m头牛进行放置
bool check(int mid)//定义布尔型变量
{
int w=a[0],s=1;//w表示第一个位置,s赋予初始值
for(int i=1;i<n;i++)
{
if(a[i]-w>=mid)//对每个输入的牛舍位置进行与第一个牛舍位置判断
{
w=a[i];
s++;
}
}
return s>=m;//?
}
int ma