题解
查看原帖
题解
368289
dinglinxi0409楼主2024/12/14 08:15

这道题我用贪心做法。

策略:依次遍历每一盏灯(除了最前面和最后面),如果能关掉就关掉。

注意:需要先排序。

程序如下:

#include <bits/stdc++.h>
using namespace std;
bool flag[100001];
int a[100001];
int main()
{
	int n,dist,i,j,ans;
	cin>>n>>dist;
	for (i=1;i<=n;i++) cin>>a[i];
	sort(a+1,a+n+1);
	ans=0;
	for (i=2;i<=n-1;i++) 
	{
		for (j=i-1;flag[j];j--);
		if (a[i+1]-a[j]<=dist) {ans++; flag[i]=1;}
	}
	cout<<ans<<endl;
	cout<<endl;
	return 0;
}
2024/12/14 08:15
加载中...