/**************************************************************
Problem: 1800
User: xujiahe
Language: C++
Result: Accepted
Time:0 ms
Memory:1276 kb
****************************************************************/
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;
int save[300],sum[300];
int n;
int main()
{
int x,y,tmp;
int r;
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%d",&save[i]);
r+=save[i];
sum[i]=sum[i-1]+save[i];
}
r=sum[n]/2;
long long ans=0;
for(int i=1;i<=n;i++)
{
for(int j=i;j<=n;j++)
{
if(sum[j]-sum[i]==r)
ans++;
}
}
ans=ans*(ans-1)/2;
printf("%lld",ans);
return 0;
}
bzoj1800: [Ahoi2009]fly 飞行棋 统计直径
最新推荐文章于 2018-07-26 15:13:57 发布
本文介绍了一种使用C++高效解决特定子数组计数问题的方法。通过预处理数组求和,实现对数组中满足条件的子数组进行快速计算。此算法能够有效地找到所有符合条件的子数组,并通过组合数学计算最终答案。

551

被折叠的 条评论
为什么被折叠?



