区间覆盖问题

用i来表示x坐标轴上坐标为[i-1,i]的长度为1的区间,并给出n(1≤n≤200)个不同的整数,表示n个这样的区间。
现在要求画m条线段覆盖住所有的区间,
条件是:每条线段可以任意长,但是要求所画线段的长度之和最小,
并且线段的数目不超过m(1≤m≤50)。
 

Input

 输入包括多组数据,每组数据的第一行表示点n,和所需线段数m,后面的n行表示点的坐标

Output

 输出每组输出占一行表示线段的长度。

Example Input

5 3
1 3 8 5 11

Example Output

7



#include <stdio.h>
#include <stdlib.h>
void q(int d[],int n)//降序排序;
{
    int i,j,t;
    for(i=0;i<n-1;i++)
        for(j=0;j<n-1-i;j++)
        if(d[j]<d[j+1])
    {
        t=d[j];
        d[j]=d[j+1];
        d[j+1]=t;
    }
}
int main()
{
    int m,n,i;
    int p[201];
    int d[201];
    while(~scanf("%d%d",&n,&m))
    {
        for(i=0;i<n;i++)
        {
            scanf("%d",&p[i]);
        }
        q(p,n);//降序排列;
        for(i=0;i<n-1;i++)
            d[i]=p[i]-p[i+1]-1;//相邻两段间的距离;
        q(d,n-1);//距离之间降序;
        if(m>=n)
            printf("%d\n",n);
        else
        {
            int nline=1;//线段的个数;
            int t1=p[0]-p[n-1]+1;//最长距离;
            int devide=0;
            while((nline<m)&&(d[devide]>0))
            {
                nline++;
                t1=t1-d[devide];//距离减小最长的一段;
                devide++;
            }
            printf("%d\n",t1);
        }
    }
    return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/509361.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Windows驱动开发如何入门

http://blog.csdn.net/charlessimonyi/article/details/50904854 http://blog.csdn.net/charlessimonyi/article/details/50904956

springmvc整合mybatis之准备阶段与文件配置

文章出处&#xff1a;课程资料 web.xml等配置文件的解释&#xff1a;打开博客 为了更好的学习 springmvc和mybatis整合开发的方法&#xff0c;需要将springmvc和mybatis进行整合。 整合目标&#xff1a;控制层采用springmvc、持久层使用mybatis实现。 步骤详解&#xff1a; …

悼念512汶川大地震遇难同胞

Problem Description 时间&#xff1a;2008年5月16日&#xff08;震后第4天&#xff09; 地点&#xff1a;汶川县牛脑寨人物&#xff1a;羌族老奶奶【转载整理】牛脑寨是一个全村600多人的羌族寨子&#xff0c;震后几天&#xff0c;这里依然能常常听到隆隆的声音&#xff0c;那…

Win10下VS2015(WDK10)驱动开发环境配置

1、 概述 微软在”WDK7600“以后就不再提供独立的内核驱动开发包了&#xff0c;而是必须首先安装微软集成开发环境VisualStudio&#xff0c;然后再从微软官网下载集成的WDK开发包、或者离线安装包&#xff0c;但是安装后Visual Studio就集驱动程序开发&#xff0c;编译&…

懒虫小鑫

roblem Description 小鑫是个大懒虫&#xff0c;但是这一天妈妈要小鑫去山上搬些矿石去城里卖以补贴家用。小鑫十分的不开心。不开心归不开心&#xff0c;小鑫还是要做这件事情的。我们把这个事情简化一下。有n块矿石&#xff0c;设第i块矿石由两个数字wi和pi表示。分别表示这块…

springmvc与mybatis整合之实现商品列表

需求 实现商品查询列表&#xff0c;从mysql数据库查询商 品信息。. DAO开发 使用逆向工程&#xff0c;生成代码 注意修改逆向工程的配置文件 ItemService接口 public interface ItemService {/*** 查询商品列表* * return*/List<Item> queryItemList();}. ItemServi…

中断处理程序与中断服务例程

版权声明&#xff1a;本文为博主原创文章&#xff0c;未经博主允许不得转载。 目录(?)[-] 1 什么是中断2中断处理程序3中断服务例程4request_irq函数分析 1. 什么是中断 简单来说中断就是硬件设备与处理器的一种交流方式&#xff0c;比如当我按下一个键时&#xff0c;只有当处…

Windows驱动程序开发语言

Windows驱动程序和Win32应用程序一样&#xff0c;都是PE格式&#xff0c;所以说&#xff0c;只要某种语言的编译器能够编译出PE格式的二进制格式文件&#xff0c;并且能够设置驱动程序的入口地址&#xff0c;那么这种语言就可以用来开发Windows驱动程序&#xff0c;所以可以选择…

java 正则表达式 手机号 邮箱(转载)

转载地址&#xff1a;https://www.cnblogs.com/go4mi/p/6426215.html package com.modules.plateform.tool;import java.util.regex.Pattern; /*** 账户相关属性验证工具**/ public class AccountValidatorUtil {/*** 正则表达式&#xff1a;验证用户名*/public static final …

商人小鑫

Problem Description 小鑫是个商人&#xff0c;当然商人最希望的就是多赚钱&#xff0c;小鑫也一样。 这天&#xff0c;他来到了一个遥远的国度。那里有着n件商品&#xff0c;对于第i件商品需要付出ci的价钱才能得到。当然&#xff0c;对于第i件商品&#xff0c;小鑫在自己心中…

Windows驱动程序调用约定

调用约定是指在函数进行调用的时候&#xff0c;会根据不同的调用规则&#xff0c;翻译成不同的汇编代码。不同的调用约定&#xff0c;会有不同的参数的入参顺序&#xff0c;和调用堆栈的处理方式。比较常用的分为C语言调用约定_cdecl&#xff0c;和标准调用约定_stdcall. Wind…

装船问题

Problem Description 王小二毕业后从事船运规划工作&#xff0c;吉祥号货轮的最大载重量为M吨&#xff0c;有10种货物可以装船。第i种货物有wi吨&#xff0c;总价值是pi。王小二的任务是从10种货物中挑选若干吨上船&#xff0c;在满足货物总重量小于等于M的前提下&#xff0c;运…

获得Class引用的三种方式?Class.forName()、getClass以及.class的使用

上代码!!! package com.spring.partise;class A{static{System.out.println("I am A");} } public class helllo {public static void main(String[] args) throws Exception {System.out.println("------------得到Class对象的两种方式---------------")…

Windows驱动程序运行时函数的调用

编译器厂商一般在发布其编译器的时候&#xff0c;会连同运行时函数一同发布。Windows驱动程序不能再代码中使用编译器提供的运行时函数&#xff0c;因为大部分运行时函数是基于Win32 API实现的&#xff0c;由于Win 32 API运行在用户模式&#xff08;RIng3层&#xff09;&#x…

活动选择问题

Problem Description sdut 大学生艺术中心每天都有n个活动申请举办&#xff0c;但是为了举办更多的活动&#xff0c;必须要放弃一些活动&#xff0c;求出每天最多能举办多少活动。Input 输入包括多组输入&#xff0c;每组输入第一行为申请的活动数n(n<100)&#xff0c;从第2…

java加载类时静态代码块、构造代码块、构造方法执行顺序

构造代码块作用&#xff1a;https://blog.csdn.net/hspingcc/article/details/54893853 package com.spring.partise;class A{A(){System.out.println("无参构造方法");}A(String str){System.out.println("带参数构造方法");}static{System.out.println(…

为什么可以通过类名调用静态方法?

JVM加载类&#xff1a; 所有的类都是在对其第一次使用时&#xff0c;动态加载到JVM中的。当程序创建第一个类的静态成员的引用时&#xff0c;就会加载这个类&#xff0c;进而可以得到该类的类型信息&#xff0c;而类型信息可以在程序运行时发现和使用类型信息。这个证明构造器…

小鑫去爬山

Problem Description 马上就要放假了&#xff0c;小鑫打算去爬山。 小鑫要去爬的这座山有n个海拔区间。为了清楚描述我们可以从上到下标号1到n。第i个区间有i个落脚点&#xff0c;每一个落脚点都有一个危险值。小鑫需要在第n个海拔区间挑选一个点向上爬&#xff0c;爬到第1个海…

NT驱动程序和WDM驱动程序的区别

1. Windows驱动程序分为两类&#xff0c;一类是不支持即插即用功能的NT式的驱动程序&#xff1b;另一类是支持即插即用功能的WDM式的驱动程序。2. NT式的驱动程序要导入的头文件时NTDDK.H&#xff0c;而WDM式的驱动要导入的头文件为WDM.H.3. DriverEntry需要放在INIT标志的内存…

java调用类中的静态变量时类中静态代码块什么情况会执行以及类的初始化问题?

类从被加载到虚拟机内存中开始&#xff0c;到卸载出内存为止&#xff0c;它的整个生命周期包括&#xff1a;加载、验证、准备、解析、初始化、使用和卸载七个阶段。 类初始化是类加载过程的最后一个阶段&#xff0c;到初始化阶段&#xff0c;才真正开始执行类中的Java程序代码…