题意:有一定数目的点,给出你灯(暂且这样称呼)的照射范围,灯必须放在这些点上。求出要照亮所有的点用的灯的最小数目。
思路:我就模拟器过程求解。
代码如下:
#include<iostream>
#include<algorithm>
using namespace std;
#define max 10000
int a[max];
int main()
{
int n,m,s,t,i,j,k,l;
while(cin>>m>>n && !(n==-1 && m==-1))
{
for(i=0;i<=n-1;i++)
cin>>a[i];
sort(a,a+n);
int T=0;
for(i=0;i<=n-1;)
{
s=i;
while(a[s]-a[i]<=m)
{
s++;
}
if(s==i)
{
T++;
i++;
}
else
{
t=s;
while(a[t]-a[s-1]<=m)
{
t++;
}
T++;
i=t;
}
}
cout<<T<<endl;
}
return 0;
}