若是凉夜已成梦

青春里 总有些事情要努力去做 总有些梦想要拼命去追。


  • 运维

  • 前端

  • 编程

  • 随笔

  • hust-oj

1746: 区间覆盖问题

发表于 2017-10-06   |   分类于 HUSTOJ   |   阅读次数 1,453

题目描述

设x1 , x2 ,…… , xn 是实直线上的n 个点。用固定长度的闭区间覆盖这n 个点,至少需要多少个这样的固定长度闭区间?
对于给定的实直线上的n个点和闭区间的长度k,设计解此问题的有效算法,计算覆盖点集的最少区间数,并证明算法的正确性。

输入

输入数据的第一行有2 个正整数n和k(n≤10000,k≤100),表示有n个点,且固定长度闭区间的长度为k。接下来的1 行中,有n个整数,表示n个点在实直线上的坐标(可能相同)。

输出

输出一个整数,表示计算出的最少区间数输出。

样例输入

7 3
1 2 3 4 5 -2 6

样例输出

3

参考代码

#include<stdio.h>
#include<stdlib.h>
int cmp(const void *a,const void *b) 
{
    return *(int *)a-*(int *)b;
}
int main() 
{
    int a[10001];
    int i,n,m,s=0,h=0,x=0;
    scanf("%d%d",&n,&m);
    for (i=0;i<n;i++)
        scanf("%d",&a[i]);
    qsort(a,n,sizeof(a[0]),cmp);
    while(h<n) 
    {
        x=a[h]+m;
        h++;
        s++;
        while(a[h]<=x)
               h++;
    }
    printf("%d",s);
    return 0;
}

解析

暂无

hustoj

发表评论 取消回复

邮箱地址不会被公开。 必填项已用*标注

*
*


hoxis wechat
著作权归作者所有
站点更新说明
  • 文章目录
  • 站点概览
若是凉夜已成梦

若是凉夜已成梦

青春里 总有些事情要努力去做 总有些梦想要拼命去追。

1904 日志
6 分类
12 标签
RSS
weibo github twitter facebook

友情链接

原站点 Skip Dreams孤独患者
© 2017 若是凉夜已成梦
Powered by WordPress | 已运行
Theme By NexT.Mist