我是靠谱客的博主 忧伤手链,最近开发中收集的这篇文章主要介绍Aggressive cows (尺取),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

这题就是给出N个点,然后让你把C头牛分别放进去,它们之间距离(平均)越大越好,因为让你输出的是它们之间距离最小的长度。

#include<math.h>
#include<algorithm>
#include<time.h>
#include<stdlib.h>
#include<iostream>
#include<string.h>
#include<map>
#include<list>
#include<string>
#include<queue>
#include<set>
#include<vector>
#include<stack>
#include<limits>
#define re register
#define iosgo() std::ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
#define run(i,n) for (int i = 1; i <= n; i++)
#define cin std::cin
#define cout std::cout
#define ll long long
#define endl "n"
using namespace std;
typedef pair<int, int>pll;
const int N = 2e5 + 10;
pll cc[N];
int h[150][150];
ll x[N], y[N], s[N];
ll gcd(ll a, ll b)
{
    return b ? gcd(b, a % b) : a;
}
int a[N];
int n, c;
bool find(int x)
{
    int ans = 1, t = a[0];
    for (int i = 1; i < n; i++)
    {
        if (a[i] - t >= x)
        {
            ans++;
            t = a[i];
            if (ans >= c)
            {
                return true;
            }
        }
    }
    return false;
}
int solve()
{
    int l = 0, r = a[n-1] - a[0], mid;
    while (l <= r)
    {
        mid = (l + r) / 2;
        if (find(mid))
        {
            l = mid + 1;
        }
        else
        {
            r = mid - 1;
        }
    }
    return l - 1;
}
int main()
{
    iosgo();
    cin >> n >> c;
    for (int i = 0; i < n; i++)
    {
        cin >> a[i];
    }
    sort(a , a + n );
    cout << solve();
}

最后

以上就是忧伤手链为你收集整理的Aggressive cows (尺取)的全部内容,希望文章能够帮你解决Aggressive cows (尺取)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(54)

评论列表共有 0 条评论

立即
投稿
返回
顶部