【题解】洛谷P2678 跳石头(二分)

1-1e9二分答案,设其为最短距离。判断如果该距离可以就向上二分(单调递增,求最大值),注意判断mid+1可以避免边界问题。

判断函数统计移走石头个数,如果相邻石头之间距离比要的最短距离还小就移走。移走石头个数小于M就返回true

#include
#include
#include
using namespace std;
const int maxn=50010;
int L,M,N;
int a[maxn];
bool pd(int x)
{
	int cnt=0,last=0,i=0;
	while(i<=N)
	{
		i++;
		while(i<=N&&a[i]-last>L>>N>>M;
	for(int i=1;i<=N;i++)
	{
		scanf("%d",&a[i]);
	} 
	N++;
	a[N]=L;
	int l=1,r=1e9;
	while(l

 

你可能感兴趣的:(题解,贪心,二分)