7-6 愤怒的牛 (25 分)

news/2025/1/17 23:19:23/

7-6 愤怒的牛 (25 分)

农夫约翰建造了一座有n间牛舍的小屋,牛舍排在一条直线上,第i间牛舍在xi​的位置,但是约翰的m头牛对小屋很不满意,因此经常互相攻击。约翰为了防止牛之间互相伤害,因此决定把每头牛都放在离其它牛尽可能远的牛舍。也就是要最大化最近的两头牛之间的距离。

牛们并不喜欢这种布局,而且几头牛放在一个隔间里,它们就要发生争斗。为了不让牛互相伤害。John 决定自己给牛分配隔间,使任意两头牛之间的最小距离尽可能的大,那么,这个最大的最小距离是多少呢?

输入格式:

第一行用空格分隔的两个整数n和m,n,m<=105;

第二行为n个用空格隔开的整数,表示位置xi​。xi​<MAXINT

输出格式:

输出仅一个整数,表示最大的最小距离值。

输入样例:

5 3
1 2 8 4 9

输出样例:

3
#include <bits/stdc++.h>
using namespace std;
int a[100010];
int l, r;
int n,c;/*bool juge(int m)//判断距离m是否可以 
{int s = 0, last = 1;//记录上一个 for (int i = 2; i <= n; i++)//依次枚举每个牛栏 {if (a[i] - a[last]<m)s++;//若此距离不满足当前答案,那么需要的牛栏数+1,即把当前牛放到下一个牛栏 else last = i;//否则就更新上一次的牛栏位置 ,即上一头牛放的位置 if (s>n - c) return false;//若需要牛栏数大于最大牛栏数,此答案不可行 }return true;
}*/bool juge(int m)              
{int ans = 1, last = 1;           //因为第一个牛一定要占据第一个隔间(这样能使本题的答案最优),所以ans初始化为1for (int i = 2; i <=n; i++){if (a[i] - a[last] >= m){ans++;           //如果比最近距离要大的话,那么该隔间就放牛   last = i;                                               }}if (ans >= c)return true;          //如果所选取的隔间数量>=c,则说明枚举的最近距离成立,但是不够大,所以return true,继续枚举更大的距离return false;
}int main()
{cin >> n >> c;for (int i = 1; i <=n; i++)cin >> a[i];l = 1; r = a[n] - a[1];           //右边界为n个隔间的总长度,最近距离一定小于等于这个数值sort(a + 1, a + 1 + n);while (l <=r){int mid = (l + r)/2;if (juge(mid))l = mid+1;       //如果当前枚举的最近距离符合,那么就让l=mid,看更大的距离是否也符合(因为要求最大的最近距离)elser = mid-1;}cout << r<< endl;    //由于最后l<=r的时候还会运行一次,会让l-1(如果答案正确的话),所以应该输出的是rreturn 0;
}

 


http://www.ppmy.cn/news/774455.html

相关文章

AIGC - Stable Diffusion 的 Prompts 提示词工程框架 (1)

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/131544508 当前 Stable Diffusion 模型使用基础的 stable-diffusion-v1-5&#xff0c;即 v1-5-pruned-emaonly.safetensors。 Stable Diffusion …

Blazor前后端框架Known功能介绍:系统安装激活及自定义

本章介绍系统安装与激活及其自定义功能。 概述 框架内置简单的系统安装功能。录入企业编码、名称、系统名称、产品密钥、管理员密码信息完成安装。可自定义高级安装功能&#xff0c;如安装数据库等您产品所需的安装信息。框架默认无需注册产品密钥&#xff0c;若产品需要安装…

Eslint manual

prettier 自动换行 在.eslintrc.cjs 设置&#xff0c;或者setting.json. rules: {prettier/prettier: [error,{semi: false,//false不换行&#xff0c; true换行wrapAttributtes: false,printwidth: 100,endOfLine: auto}]}去掉文件命名规则 在.eslintrc.js配置 rules: { vu…

恢复系统映像时错误代码0X80070057的解决方案

微软在给用户制造麻烦方面可谓业界一绝。Windows 7 及以上版本在控制面板提供了“系统映像”的备份功能&#xff0c;可以把EFI、MSR、Recovery和系统盘一起打包备份。这个功能在磁盘结构没有改变的时候是很好用的&#xff0c;但是一旦磁盘结构改变这个功能便立即崩盘 在磁盘结构…

Ubuntu系统镜像备份及恢复

为了更快的安装系统主机及配置其服务&#xff0c;可参考采用备份已搭建好换进的系统镜像方式进行新主机的配置方案。以下是系统备份及恢复的调研实验。 Systemback是一款用于创建定点系统备份&#xff0c;其功能包括&#xff1a;系统备份、系统恢复、系统复制、系统安装、live系…

计算机管理映像路径,手把手教你解决win7系统任务管理器显示映像路径的恢复办法...

根据小伙伴们的反馈&#xff0c;发现win7系统任务管理器显示映像路径的问题是很多朋友的困扰&#xff0c;尽管处理方法特别的容易&#xff0c;可是也有很多朋友不知道win7系统任务管理器显示映像路径究竟要怎么处理。小编把总结的关于win7系统任务管理器显示映像路径的方法了教…

linux系统恢复

微信设置水滴昵称&#xff0c;个性中带点萌 首先&#xff0c;我们了解一下Linux系统在启动的时候做了那哪些工作&#xff1a; Linux启动过程 手动引导系统启动 主引导记录&#xff08;MBR&#xff0c;Main Boot Record&#xff09;是位于磁盘最前边的一段引导&#xff08;Lo…

windows系统镜像修复计算机,Win10系统下修复Windows映像方法

win10系统下修复windows映像方法。当 windows 映像不可用的时候,使用DISM工具可以修复损坏的windows映像。在修复映像文件之前,我们先要检查windows映像是否可修复,那么怎么检查?怎么修复?下面我们一起来看看具体操作方法。 DISM可用来修复 WIM 或 VHD 文件中的脱机 windo…