区间覆盖问题

原创 2018年04月15日 22:34:37

区间覆盖问题

Time Limit: 1000 msMemory Limit: 65536 KiB

Problem Description

 用i来表示x坐标轴上坐标为[i-1,i]的长度为1的区间,并给出n(1≤n≤200)个不同的整数,表示n个这样的区间。

现在要求画m条线段覆盖住所有的区间,

条件是:每条线段可以任意长,但是要求所画线段的长度之和最小,

并且线段的数目不超过m(1≤m≤50)。

 

Input

 输入包括多组数据,每组数据的第一行表示区间个数n和所需线段数m,第二行表示n个点的坐标。

Output

 每组输出占一行,输出m条线段的最小长度和。

Sample Input

5 3
1 3 8 5 11

Sample Output

7


#include<stdio.h>


void sort(int a[], int n)
{
    int i, j, t;


    for(i = 0; i < n - 1; i++)
    {
        for(j = 0; j < n - 1 - i; j++)
        {
            if(a[j] < a[j + 1])
            {
                t = a[j], a[j] = a[j + 1], a[j + 1] = t;
            }
        }
    }
}


int main(void)
{
    int n, m, e[500], a[500], x, i;


    while(~scanf("%d %d", &n, &m))
    {
        for(i = 0; i < n; i++)
        {
            scanf("%d", &e[i]);
        }


        sort(e, n);   //把数轴上的数排序由大到小


        for(i = 0; i < n - 1; i++)
        {
            a[i] = e[i] - e[i + 1] - 1;  
        }


        sort(a, n - 1);  //将区间的间隔由大到小排序


        x = e[0] - e[n - 1] + 1;  //总的长度


        if(m == 1)
        {
            printf("%d\n", x);  //不能再分
        }


        else
        {
            for(i = 0; i < m - 1; i++) //m-1就是可以去掉的区间间隔的个数
            {
                x -= a[i];
            }


            printf("%d\n", x);
        }


    }


    return 0;
}

区间覆盖问题 (sdut oj)

区间覆盖问题 Time Limit: 1000MS Memory Limit: 65536KB Problem Description  用i来表示x坐标轴上...
  • SwordsMan98
  • SwordsMan98
  • 2017-04-21 17:02:44
  • 223

区间覆盖问题 例题 POJ 2376

题意:给出N个区间[Li,Ri],选最少数量的区间使得给定区间[l,r]被覆盖。 分析: 贪心经典例题。 将区间按左端点(相同则按右端点)排序,直接用pair就可以。 curR表示当前已经覆盖到的区间...
  • INCINCIBLE
  • INCINCIBLE
  • 2016-11-16 15:00:52
  • 276

贪心法——区间覆盖问题

贪心法——区间覆盖问题 区间覆盖问题。数轴上有n个闭区间[ai,bi][a_i, b_i],选择尽量少的区间覆盖一条指定线段[s,t][s,t]。 先进行预处理,将不包含[s,t][s,t]的区间...
  • q547550831
  • q547550831
  • 2016-06-03 22:18:36
  • 1318

贪心——区间覆盖问题之区间完全覆盖最小区间数

问题:区间完全覆盖问题问题描述:给定一个长度为m的区间,再给出n个区间的起点和终点,求最少使用多少个区间可以将整个区间完全覆盖。方法: 先将n个区间按照起点进行递增排序。 令s表示已经覆盖到的区域。再...
  • karry_zzj
  • karry_zzj
  • 2017-04-28 10:14:52
  • 1210

[2074]区间覆盖问题 sdutOJ

 区间覆盖问题 Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述  用i来表示x坐标...
  • jiangyongy
  • jiangyongy
  • 2014-08-08 20:42:55
  • 280

山东理工大学 OJ 2074 区间覆盖问题

http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2074 题目描述  用i来表示x坐标轴上...
  • u013573047
  • u013573047
  • 2014-02-20 20:12:41
  • 1012

poj 2528 Mayor's posters(线段树区间覆盖、离散化)

Mayor's posters Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 49385   Accepted:...
  • aaaaacmer
  • aaaaacmer
  • 2015-07-28 11:12:05
  • 810

RQNOJ 601(区间覆盖问题)

查看题目 Show Problem 题目:[NOIP2010]引水入城 问题编号:601 题目描述 在一个遥远的国度,一侧是风景秀美的湖泊,另一侧则是漫无边际的沙漠...
  • nike0good
  • nike0good
  • 2012-11-13 15:43:00
  • 1064

贪心算法几类区间覆盖问题总结

(1)区间完全覆盖问题 问题描述:给定一个长度为m的区间,再给出n条线段的起点和终点(注意这里是闭区间),求最少使用多少条线段可以将整个区间完全覆盖 样例:(1)区间完全覆盖问题 ...
  • Dear_Jia
  • Dear_Jia
  • 2017-08-01 17:48:43
  • 803

贪心算法之区间覆盖问题

贪心算法之区间覆盖问题 数轴上有n个区间[ai,bi],选择尽量少的区间覆盖一条指定线段[s,t]。 贪心策略: 把各区间按照a从小到大排序,从前向后遍历,然后每次选择从当前起点...
  • u012736084
  • u012736084
  • 2014-02-23 15:19:05
  • 3111
收藏助手
不良信息举报
您举报文章:区间覆盖问题
举报原因:
原因补充:

(最多只允许输入30个字)