zoukankan      html  css  js  c++  java
  • ACM题目————区间覆盖问题

    题目描述
    设x1 , x2,... , xn是实直线上的n个点。用固定长度的闭区间覆盖这n个点,至少需要多少个这样的固定长度闭区间?设计解此问题的有效算法,并证明算法的正确性。
    编程任务:
    对于给定的实直线上的n个点和闭区间的长度k,编程计算覆盖点集的最少区间数。
    输入
    输入数据的第一行有2 个正整数n和k,表示有n个点,且固定长度闭区间的长度为k。接下来的1 行中,有n个整数,表示n个点在实直线上的坐标(可能相同)。
    输出
    将编程计算出的最少区间数输出。
    样例输入
    7 3
    1 2 3 4 5 -2 6
    样例输出
    3

    贪心即可,但要更新左端点!

    //Asimple的 贪心
    #include <iostream>
    #include <algorithm>
    
    using namespace std;
    const int MAX = 1000001 ;
    int n, k, num[MAX], temp, sum;
    
    int main()
    {
        cin >> n >> k ;
        for(int i=0; i<n; i++)
            cin >> num[i] ;
        sort(num,num+n);
        sum = 1 ;
        for(int i=0, temp=num[0]; i<n; i++)
        {
            if(num[i]-temp>k)
            {
                temp = num[i] ;
                sum ++ ;
            }
        }
        cout << sum << endl ;
    
        return 0;
    }
    
    低调做人,高调做事。
  • 相关阅读:
    Keepalived安装使用详解
    Django缓存使用方法
    Django常用命令及参数配置(Django 1.8.6)
    Python之Rpyc模块
    Hadoop:实战Web日志分析
    Hadoop:使用Mrjob框架编写MapReduce
    Hadoop:使用原生python编写MapReduce
    Hadoop安装
    LGOJP1850 换教室
    BZOJ4318: OSU!
  • 原文地址:https://www.cnblogs.com/Asimple/p/5487136.html
Copyright © 2011-2022 走看看