枚举,#8WA求调
查看原帖
枚举,#8WA求调
1010033
NeilyoD楼主2025/2/2 23:06

各位帮看看只有第8个点错了,正确答案是4100,代码结果是4099,想不出哪里有问题,整体思路是假设移走i个路灯可以实现最大连续k个,尝试每波移走j到j+i-1个,那么最大区间就是a[j+i]-a[j-1]; 代码:

#include<bits/stdc++.h>
using namespace std;
int a[100005];
int main(){
	//freopen("P3662-3.in","r",stdin);
	int n,k,b;//B个损坏,连续k个
	int minn,roadlen,flag=0;
	cin>>n>>k>>b;
	for(int i=1;i<=b;i++)
		cin>>a[i];
	sort(a+1,a+b+1);
	a[b+1]=n;
	for(int i=1;i<=n;i++){
		//最少i个可以实现连续k个亮 
		for(int j=1;j<=b-i+1;j++)
		//以第j个路障为第一个拿走的灯,连续拿j+i-1个
		{
			roadlen=a[j+i]-a[j-1];
			if(roadlen>=k){
				flag=1,minn=i;
				break;
			}
		 }	
		if(flag==1)break;	
	}
	cout<<minn;
	return 0;
}
2025/2/2 23:06
加载中...