luogup1824进击的奶牛

Nico&11101001 Nico&11101001     2022-09-05     548

关键词:

题目描述

Farmer John建造了一个有N(2<=N<=100,000)个隔间的牛棚,这些隔间分布在一条直线上,坐标是x1,...,xN (0<=xi<=1,000,000,000)。

他的C(2<=C<=N)头牛不满于隔间的位置分布,它们为牛棚里其他的牛的存在而愤怒。为了防止牛之间的互相打斗,Farmer John想把这些牛安置在指定的隔间,所有牛中相邻两头的最近距离越大越好。那么,这个最大的最近距离是多少呢?

输入输出格式

输入格式:

 

第1行:两个用空格隔开的数字N和C。

第2~N+1行:每行一个整数,表示每个隔间的坐标。

 

输出格式:

 

输出只有一行,即相邻两头牛最大的最近距离。

 

输入输出样例

输入样例#1:
5 3
1 
2 
8 
4 
9 
 
输出样例#1:
3

 二分答案

#include <cstdio>
#include <algorithm>
using namespace std;
#define N 100003

int n,c;
int hou[N];
bool check(int mid)
{
    int put=1;
    for(int j=1,i=2;i<=n;i++)
    {
        if(hou[i]-hou[j]>=mid)
        {
            put++;
            j=i;
        }
    }
    if(put<c)return false;
    else return true;
}
int main()
{
    scanf("%d%d",&n,&c);
    for (int i=1;i<=n;i++)
        scanf("%d",hou+i);
    sort(hou+1,hou+n+1);
    int l=1,r=hou[n]-hou[1];
    int mid;
    while(r-l>1)
    {
        mid=(l+r)>>1;
        if(check(mid))l=mid;
        else r=mid;
    }
    printf("%d
",l);
    return 0;
}

 

洛谷p1824进击的奶牛题解

此文为博主原创题解,转载时请通知博主,并把原文链接放在正文醒目位置。题目链接:https://www.luogu.org/problem/show?pid=1824题目描述FarmerJohn建造了一个有N(2<=N<=100,000)个隔间的牛棚,这些隔间分布在一条直线上,坐标是x1,...,xN... 查看详情

洛谷p1824进击的奶牛二分答案(求最大的最小值)(代码片段)

题目链接:https://www.luogu.org/problemnew/show/P1824题目描述FarmerJohn建造了一个有N(2<=N<=100,000)个隔间的牛棚,这些隔间分布在一条直线上,坐标是x1,...,xN(0<=xi<=1,000,000,000)。他的C(2<=C<=N)头牛不满于隔间的位置分布,它们为... 查看详情

p1824进击的奶牛(二分)(代码片段)

思路:把检验的函数说一下,就是检测的距离x时,是否存在c个隔断相离大于等于x,如果是则返回1,不是则返回0#include<iostream>#include<cstdio>#include<algorithm>usingnamespacestd;constintmaxn=1e5+10;inta[maxn],n,c,minn=0x3f3f3f3f,ans,mid;boo... 查看详情

luogup2345奶牛集会

题目背景MooFest,2004Open题目描述约翰的N头奶牛每年都会参加“哞哞大会”。哞哞大会是奶牛界的盛事。集会上的活动很多,比如堆干草,跨栅栏,摸牛仔的屁股等等。它们参加活动时会聚在一起,第i头奶牛的坐标为Xi,没... 查看详情

luogup2345奶牛集会

二次联通门: luoguP2345奶牛集会    /*luoguP2345奶牛集会权值线段树以坐标为下标,坐标为值建立线段树对奶牛按听力由小到大排序对于要查的牛每次第i次放入奶牛起作用的v就是vi;  每次ans+=(xi*sum-sumxl)*vi+(... 查看详情

luogup1154奶牛分厩[数论]

题目描述农夫约翰有N(1<=N<=5000)头奶牛,每头奶牛都有一个唯一的不同于其它奶牛的编号Si,所有的奶牛都睡在一个有K个厩的谷仓中,厩的编号为0到K-1。每头奶牛都知道自己该睡在哪一个厩中,因为约翰教会... 查看详情

[luogup1868]饥饿的奶牛(dp)

传送门 先把所有区间按照左端点排序f[i]表示区间0~i的最优解 #include<cstdio>#include<iostream>#include<algorithm>#definemax(x,y)((x)>(y)?(x):(y))intn,v;intf[3000001];structnode{ intx,y;}p[150001]; 查看详情

luogup2344奶牛抗议(树状数组优化dp)(代码片段)

   传送门 解题思路树状数组优化dp,f[i]表示前i个奶牛的分组的个数,那么很容易得出$f[i]=sumlimits_1leqjleqif[j-1]*(sum[i]gesum[j-1])$,但是这样的时间复杂度是$O(n^2)?$,所以考虑优化,发现必须满足$sum[i]gesum[j-1]?$才能进... 查看详情

题解luogup3052usaco12摩天大楼里的奶牛cowsinaskyscraper(代码片段)

迭代加深搜索基础题目描述AlittleknownfactaboutBessieandfriendsisthattheylovestairclimbingraces.Abetterknownfactisthatcowsreallydon’tlikegoingdownstairs.Soafterthecowsfinishracingtothetopoftheirfavoriteskyscr 查看详情

luogup2982[usaco10feb]慢下来slowingdown|dfs序线段树(代码片段)

题目链接 题目大意:有一棵N个结点树和N头奶牛,一开始所有奶牛都在一号结点,奶牛们将按从编号1到编号N的顺序依次前往自己的目的地,求每头奶牛在去往自己目的地的途中将会经过多少已经有奶牛的结点。 题解:... 查看详情

[luogup1472]奶牛家谱cowpedigrees(dp)

传送门 一个深度为i的树可以由一个根节点外加两个深度为i-1的树组成,这就决定了DP该怎么写。然而我真的没有想到。 f[i][j]表示深度为i节点数为j的个数sum[i][j]表示深度小于等于i节点树为j的个数 #include<cstdio>#de... 查看详情

[luogup1578]奶牛浴场(dp)

传送门 O(s2)算法详见论文 王知昆--浅谈用极大化思想解决最大子矩形问题我就复制你能把我怎么样QAQ#include<cstdio>#include<iostream>#include<algorithm>#defineN5010#definemax(x,y)((x)>(y)?(x):(y))#definemin(x,y)((x)& 查看详情

「luogup3137」x「usaco16feb」圆形谷仓(代码片段)

#题目大意管理大大给修下$ extMarkdown$吧,严重影响做题体验啊。这道题的意思很简单就是给你一个长度是$n$的环,这个环上不均匀的分布着$n$头奶牛。一头奶牛移动要花费的代价是距离的平方,现在让你求出使得每个点上都有一... 查看详情

codevs2038香甜的黄油x+luogup1828x

题目描述Description农夫John发现做出全威斯康辛州最甜的黄油的方法:糖。把糖放在一片牧场上,他知道N(1<=N<=500)只奶牛会过来舔它,这样就能做出能卖好价钱的超甜黄油。当然,他将付出额外的费用在奶牛上。农夫John很... 查看详情

luogup2925干草出售0-1背包问题(代码片段)

LuoguP2925干草出售一、题目二、参考代码2.1二维dp2.2一维dp一、题目农民john面临一个很可怕的事实,因为防范失措他存储的所有稻草给澳大利亚蟑螂吃光了,他将面临没有稻草喂养奶牛的局面。在奶牛断粮之前,john拉着他的马车... 查看详情

luogup2925干草出售0-1背包问题(代码片段)

LuoguP2925干草出售一、题目二、参考代码2.1二维dp2.2一维dp一、题目农民john面临一个很可怕的事实,因为防范失措他存储的所有稻草给澳大利亚蟑螂吃光了,他将面临没有稻草喂养奶牛的局面。在奶牛断粮之前,john拉着他的马车... 查看详情

luogup2925干草出售0-1背包问题(代码片段)

LuoguP2925干草出售一、题目二、参考代码2.1二维dp2.2一维dp一、题目农民john面临一个很可怕的事实,因为防范失措他存储的所有稻草给澳大利亚蟑螂吃光了,他将面临没有稻草喂养奶牛的局面。在奶牛断粮之前,john拉着他的马车... 查看详情

[luogup3052][usaco12mar]摩天大楼里的奶牛cowsinaskyscraper(dp)

传送门 输出被阉割了。只输出最少分的组数即可。f数组为结构体f[S].cnt表示集合S最少的分组数f[S].v 表示集合S最少分组数下当前组所用的最少容量f[S]=min(f[S],f[S-i]+a[i])(i∈S)运算重载一下即可。 ——代码1#include&l... 查看详情