能不能证明答案单调性呢?
查看原帖
能不能证明答案单调性呢?
780872
166028933437q1w2e3楼主2024/10/3 11:54

用二分去做WA了一个点……会不会是二分本身思路就有问题呢?

#include <bits/stdc++.h>
using namespace std;
const int MAXN=3e5+10;
#define int long long

int n,a,b,c,s[MAXN],sum[MAXN];

bool cheak(int mid)
{
	for(int i=1;i<=n-mid+1;i++)
	{
		int j=mid+i-1;
		if(sum[j]-sum[i-1]>a*(b*j-c*i)) return true;
	}
	return false;
}

signed main()
{
	scanf("%lld %lld %lld %lld",&n,&a,&b,&c);
	for(int i=1;i<=n;i++)
	{
		scanf("%lld",&s[i]);
		sum[i]=sum[i-1]+s[i];
	}
	int l=0,r=n;
	while(l<r-1)
	{
		int mid=(l+r)>>1;
		if(cheak(mid)) l=mid;
		else r=mid;
	}
	printf("%lld",l);
	return 0;
}

提交记录……

2024/10/3 11:54
加载中...