CE求助
查看原帖
CE求助
122000
Samuel_YHL楼主2021/1/22 15:48
#include <cstdio>
#include <cstring>
#include <algorithm>
#define File(_) freopen(#_".in", "r", stdin);freopen(#_".out", "w", stdout)
#define Debug(_) freopen(#_".in", "r", stdin);freopen("debug.out", "w", stdout)
#define fo(i, a, b) for (int i = a; i <= b; ++i)
#define fd(i, a, b) for (int i = a; i >= b; --i)
#define fe(i, u) for (int i = head[u]; i; i = edge[i].next)
#define N 50010
#define mod 
#define inf 0x3f3f3f3f
#define db double
#define ll long long
#define gc getchar()
#define init(a, b) memset(a, b, sizeof a)
using namespace std;
db c[N], a[N], b[N], sum[N], f[N];
int d[N];
db calc(int i, int j)
{
	return (f[i] + b[i] * b[i] - f[j] - b[j] * b[j]) * 1.0 / ((b[i] - b[j]) * 1.0);
}
signed main()
{
	int n, l;
	scanf("%d%d", &n, &l);
	fo (i, 1, n)
	{
		scanf("%lf", &c[i]);
		sum[i] = sum[i - 1] + c[i];
	}
	fo (i, 0, n)
	{
		a[i] = sum[i] + i;
		b[i] = a[i] + l + 1;
	}
	int h = 1, t = 1;
	fo (i, 1, n)
	{
		while (h < t && calc(d[h], d[h + 1]) < 2 * a[i])
			++h;
		f[i] = f[d[h]] + (a[i] - b[d[h]]) * (a[i] - b[d[h]]);
		while (h < t && calc(i, d[t - 1]) < calc(d[t - 1], d[t]))
			--t;
		d[++t] = i;
	}
	printf("%lld", (ll)f[n]);
	return 0;
}

连交了好几遍都是CE,也没有错误信息,本地编译能过,有没有dalao能说明一下原因qaq

2021/1/22 15:48
加载中...