USACO青铜组第3题求助
  • 板块学术版
  • 楼主you_are_a_idiot
  • 当前回复2
  • 已保存回复2
  • 发布时间2024/1/29 15:04
  • 上次更新2024/1/29 15:25:08
查看原帖
USACO青铜组第3题求助
555075
you_are_a_idiot楼主2024/1/29 15:04

原来超时了,时间复杂度O(n²),现在O(n),不超时但WA

#include<iostream>
#include<cmath>
using namespace std;

long long n, a[200010], cnt, sum;
int main()
{
	cin >> n;
	for(int i = 1; i <= n; i++) cin >> a[i];
	for(int i = 1; i <= n; i++)
	{
		a[i] += sum;
		if(a[i] == 0) continue;
		cnt += abs(a[i]);
		if(a[i] < 0)
		{
			sum += (i + 1) * abs(a[i]);
			a[i] = 0;
		}
		else
		{
			sum -= abs(a[i]) * (i + 1);
			a[i] = 0;
		}
		cout << sum << endl;
	}
	cout << cnt << endl;
	return 0;
}

给个思路呗。

2024/1/29 15:04
加载中...