【貪心】區間覆蓋問題
阿新 • • 發佈:2019-02-16
區間覆蓋問題
Time Limit: 1000MS Memory Limit: 65536KB
Submit Statistic Discuss
Problem Description
設x1 , x2 ,…… , xn 是實直線上的n 個點。用固定長度的閉區間覆蓋這n 個點,至少需要多少個這樣的固定長度閉區間?
對於給定的實直線上的n個點和閉區間的長度k,設計解此問題的有效演算法,計算覆蓋點集的最少區間數,並證明演算法的正確性。
Input
輸入資料的第一行有2 個正整數n和k(n≤10000,k≤100),表示有n個點,且固定長度閉區間的長度為k。接下來的1 行中,有n個整數,表示n個點在實直線上的座標(可能相同)。
Output
輸出一個整數,表示計算出的最少區間數輸出。
Example Input
7 3
1 2 3 4 5 -2 6
Example Output
3
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
int n,k;
cin>>n>>k;
int* a=new int[n];
for(int i=0;i<n;i++)
{
cin>>a[i];
}
sort(a,a+n);
int mark=a[0];
int num=1;
for(int j=1;j<n;j++)
{
if(a[j]>mark+k)
{
mark=a[j];
num++;
}
}
cout<<num<<endl;
return 0;
}