区间覆盖问题
来源:互联网 发布:java写hello world 编辑:程序博客网 时间:2024/06/07 05:02
Problem Description
用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>void sort(int a[],int n){ int i,j,t; for(i=0;i<n;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(){ int pos[205],dist[205],ans; int n,m,i,j; while(~scanf("%d%d",&n,&m)) { for(i=0;i<n;i++) { scanf("%d",&pos[i]); } sort(pos,n); for(i=0;i<n-1;i++) { dist[i]=pos[i]-pos[i+1]-1; } sort(dist,n-1); if(m>=n) ans=n; else { int nline=1; int len=pos[0]-pos[n-1]+1; //printf("%d\n",len); int devide=0; while((nline<m)&&(dist[devide]>0)) { nline++; len-=dist[devide]; //printf("len:%d dist:%d\n",len,dist[devide]); devide++; } ans=len; } printf("%d\n",ans); } return 0;}
0 0
- 区间覆盖问题
- 区间覆盖问题
- 区间覆盖问题
- 区间覆盖问题
- 区间覆盖问题(sdut2074
- 区间覆盖问题
- 区间覆盖问题【贪心】
- 区间覆盖问题
- 【区间完全覆盖问题】
- 区间覆盖问题
- 区间覆盖问题 贪心
- 区间覆盖问题
- 贪心 区间覆盖问题
- 区间覆盖问题(贪心)
- 区间覆盖问题
- 区间覆盖问题
- 区间覆盖问题
- 区间覆盖问题 SDUT2074
- What is Angular 2? High level overview, feature and fundamentals.
- 什么是中间件
- 问题十一:用条件编译(#if…#endif)避免 main函数中测试代码在测试完成后就删除
- 数据结构实验之栈四:括号匹配
- C++ 语法实验室之 static 关键字
- 区间覆盖问题
- zeppelin mysql可视化之旅
- 数据结构实验之栈八:栈的基本操作
- 1123. Is It a Complete AVL Tree (30)
- 什么是WebLogic
- angular.js的$digest循环
- Python零基础入门之十集合
- 活动选择
- WebLogic与Tomcat比较