首页 > 其他分享 >USACO备考冲刺必刷题 | P1676 Aggressive cows

USACO备考冲刺必刷题 | P1676 Aggressive cows

时间:2024-12-13 18:56:36浏览次数:11  
标签:约翰 int P1676 mid USACO 必刷题 备考 牛舍

学习C++从娃娃抓起!记录下USACO(美国信息学奥赛)备考学习过程中的题目,记录每一个瞬间。

附上汇总贴:USACO备考冲刺必刷题 | 汇总-CSDN博客


【题目描述】

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

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

【输入】

第一行用空格分隔的两个整数 n 和 m

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

【输出】

一行一个整数,表示最大的最小距离值。

【输入样例】

5 3
1 2 8 4 9

【输出样例】

3

【代码详解】

#include <bits/stdc++.h>
using namespace std;
int n, m, l, r, mid;
int a[100005];
int main()
{
    cin >> n >> m;  // 输入n和m
    for (int i=1; i<=n; i++) {  // 输入n个牛舍的位置
        cin >> a[i];
    }
    sort(a+1, a+n+1);  // 按照从小到大排列,因为后面需要二分搜索
    l = a[1], r = a[n];  // 定义l和r
    while (l<r) {  // 二分模板
        int cnt=0;  // 统计可选择的牛舍
        mid = l + (r-l)/2;  // 二分模板
        int last = a[1];  // 定义待比较的牛舍,初始从第1个牛舍开始比较
        for (int i=2; i<=n; i++) {  // 往后遍历所有牛舍
            if (a[i]-last>=mid) {  // 如果两个牛舍之间的距离大于等于mid,即可以被选择
                cnt++;  // 统计数自增1
                last = a[i];  
            }
        } 
        // cout << "cnt " << cnt << endl;
        if (cnt<m-1) r = mid;
        else l = mid+1;
    }
    cout << l-1 << endl;  // 因为r先动,所以最终输出应该是l-1(l最后+1试探失败,所以需要l-1,即为mid)
    return 0;
}

【运行结果】

5 3
1 2 8 4 9
3

标签:约翰,int,P1676,mid,USACO,必刷题,备考,牛舍
From: https://blog.csdn.net/guolianggsta/article/details/135104921

相关文章

  • 【洛谷】P1217 [USACO1.5] 回文质数(AC详解)
    #include<iostream>//引入输入输出流头文件,用于实现标准输入输出操作,例如使用cin和cout#include<cmath>//引入数学函数库头文件,主要用于调用sqrt函数来求平方根,辅助判断质数usingnamespacestd;//函数声明,用于判断一个整数是否为质数,接收一个整数参数,返回布尔值......
  • P9951 [USACO20FEB] Swapity Swap B 题解
    题目传送门思路注意到\(1\leK\le10^9\),暴力显然会超时。将每次操作后的数列输出出来,发现会在一定次数的翻转后,重新回到初始数列。\(1\leN\le100\),循环节一定不会太长,所以暴力处理循环节长度即可。代码#include<bits/stdc++.h>usingnamespacestd;intn,lo,k,l1,l2,r......
  • 必刷题拳打吉布斯脚踢霍姆亥兹恩情课文
    从IUPAC访问回来必刷题爷爷全然不顾身体的疲惫,连夜找我们几个高中生商量期中考试的安排。谈得晚了,便送我们出门,要司机送我们回家。在去大门口的路上,我们说:“必爷爷,您回去休息吧。您刚从IUPAC回来。”必爷爷摇摇头,“不碍事,你们知道现在国际上有很多人把高中化学当作敌人,不断......
  • 题解:[USACO07DEC] Sightseeing Cows G
    洛谷P2868题目大意有个$n$个点,$m$条边的有向图,点有点权,边有边权。现在要找出一个环,使得点权和与边权和的比值最大。思路既然说要使得点权和与边权和的比值最大,那么就会想到$01$分数规划。二分答案就不用说了,重点是这个$check$函数。$01$分数规划的板子中要检查的是......
  • P2863 [USACO06JAN] The Cow Prom S
    https://www.luogu.com.cn/problem/P2863[USACO06JAN]TheCowPromS题目描述有一个n个点,m条边的有向图,请求出这个图点数大于1的强连通分量个数。输入格式第一行为两个整数n和m。第二行至m+1行,每一行有两个整数a和b,表示有一条从a到b的有向边。输出格式......
  • GESP一级必刷题 分支结构 P5713 洛谷团队系统
    【深基3.例5】洛谷团队系统题目描述在洛谷上使用团队系统非常方便的添加自己的题目。如果在自己的电脑上配置题目和测试数据,每题需要花费时间555分钟;而在洛谷团队中上......
  • 蓝桥杯备考冲刺必刷题(Python) | P152 反倍数
    学习Python从娃娃抓起!记录下蓝桥杯备考比赛学习过程中的题目,记录每一个瞬间。附上汇总贴:蓝桥杯备考冲刺必刷题(Python)|汇总-CSDN博客【题目描述】给定三个整数a,b,c,如果一个整数既不是α的整数倍也不是b的整数倍还不是c的整数倍,则这个数称为反倍数。请问在1至n中有多少个......
  • 蓝桥杯备考冲刺必刷题(Python) | 128 冰雹数
    学习Python从娃娃抓起!记录下蓝桥杯备考比赛学习过程中的题目,记录每一个瞬间。附上汇总贴:蓝桥杯备考冲刺必刷题(Python)|汇总-CSDN博客【题目描述】任意给定一个正整数N,如果是偶数,执行:N/2;如果是奇数,执行:Nx3+1,生成的新的数字再执行同样的动作,循环往复。通过观察发现,这个......
  • [USACO1.5] 回文质数 Prime Palindromes
    题目传送门P1217[USACO1.5]回文质数PrimePalindromes题目描述因为151151151既是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以......
  • 蓝桥杯备考冲刺必刷题(Python) | 548 时间加法
    学习Python从娃娃抓起!记录下蓝桥杯备考比赛学习过程中的题目,记录每一个瞬间。附上汇总贴:蓝桥杯备考冲刺必刷题(Python)|汇总-CSDN博客【题目描述】现在时间是a点b分,请问t分钟后,是几点几分?【输入】输入的第一行包含一个整数a。第二行包含一个整数b.第三行包含一个整数t......