题目链接:信息学奥赛一本通T1433-愤怒的牛 - C语言网 (dotcpp.com)
题目大意
给出N间在一条线上的屋子,要求我们计算让牛在最大化离最小值的距离
思路
1.由于这道题要计算固定的范围内求出最大的距离,所以这类思维需要用到二分的最大化最小值。
2.运用最大化最小值,需要找到中间值,再让左右端点与中间值靠近进行比较,从而确定牛所在的位置,最后计算出结果
坑点
1.需要用到bool类型函数,(有的时候一些二分题可以枚举暴力通过,但这道题不同),所以我认为这是一个坑点
2.需要考虑到边界问题(这个有点难处理)
代码
#include<stdio.h>
#include<iostream>
#include<algorithm>
using namespace std;
int a[100005];
int n,m;
bool w(int q)//定义一个bool类型判断真假
{
int j=a[0],niu=1;//从第a[0]开始
for(int i=0;i<n;i++)
{
if(a[i]-j>=q)//对每个牛距离进行判断是否满足最大距离最最小值
{
j=a[i];
niu++;//牛的距离++
if(niu>=m)
{
return true;//说明已经找到答案
}
}
}
return false;//没有找到
}
int main()
{
ci


1825

被折叠的 条评论
为什么被折叠?



