zoukankan      html  css  js  c++  java
  • POJ-2456(二分+贪心)

    题意:
        有n个牛栏,选m个放进牛,相当于一条线段上有 n 个点,选取 m 个点,
    使得相邻点之间的最小距离值最大

    思路:贪心+二分
    二分枚举相邻两牛的间距,判断大于等于此间距下能否放进所有的牛。

    #include<iostream>
    #include<algorithm>
    #include<cstdio>
    #define max 100005
    using namespace std;
    int n,c,a[max];
    bool judge(int d) {
        int index = 0, num=1;
        for(int i=1;i<n;i++){
            if(a[i]-a[index]>=d){
                index = i;
                num++;
            } 
            if(num>=c) return true;
        } 
        return false;
    }
    int main() {
    
        while(scanf("%d%d",&n,&c)!=EOF) {
            for(int i=0; i<n; i++) {
                scanf("%d",&a[i]);
            }
            sort(a,a+n);
            int l,r,ans;
            l = 1; r = a[n-1]-a[0]; ans = 0;
            while(l<=r) {
                int mid = (l+r)>>1;
                if(judge(mid)) {
                    ans = mid;
                    l = mid+1;
                } else {
                    r = mid -1;
                }
            }
            cout<<ans<<endl;
        }
    
        return 0;
    }
  • 相关阅读:
    TCL环境检查
    POI之Excel文档增删改查
    wireshark自动化之tshark命令行
    selenium-webdriver
    ruby自动化之selenium webGUI
    TCL自动化之SSH交互式
    链表的操作
    参考网址
    RTC定时开机闹钟
    中断
  • 原文地址:https://www.cnblogs.com/Lemon1234/p/11607132.html
Copyright © 2011-2022 走看看