平衡序列

作者: qiqi 分类: 前缀和/差分 发布时间: 2025-10-23 20:25

提交链接

题目描述:小杨有一个包含 n 个正整数的序列 a。他认为一个序列是平衡的当且仅当存在一个正整数 i(1≤i<n)使得序列第 1 到第 i 个数字的总和等于第 i+1 到第 n 个数字的总和。

#include <bits/stdc++.h>
using namespace std;
int a[100001];
long long s[100001];

int main()
{
	int t, n;
	bool flag;
	scanf("%d", &t);

	while (t--)
	{
		flag = false;
		scanf("%d", &n);
		s[0] = 0;
		for (int i = 1; i <= n; i++)
		{
			scanf("%d", a + i);
			s[i] = s[i - 1] + a[i];
		}

		for (int i = 1; i < n; i++)
		{
			long long left = s[i] - s[0]; //s[1,i]
			long long right = s[n] - s[i];//s[i+1,n]

			if (left == right)
			{
				flag = true;
				break;
			}
		}
		if (flag)
			printf("Yes\n");
		else
			printf("No\n");
	}
	return 0;
}

数组a可不用!

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

标签云