题目大意:n段圆弧,求有多少个矩形
题解:统计直径就行了,可以采用前缀和,然后答案就是C(x,2)。不过统计直径的时候可能会出现一种情况,比如1,2,3和4,5,6是两段等于半圆的弧,而它们所对的半径是同一条,所以说统计时会有重复,对于这种情况的解决,直接少算一条边就好,比如第一条边不要,然后统计其它的半圆,就能得出答案。
#include <cstdio>
#include <algorithm>
using namespace std;
const int maxx = 100;
int a[maxx],sum[maxx],ans,cnt,n;
int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++) scanf("%d",&a[i]),sum[i] = sum[i-1]+a[i];
cnt = sum[n] >> 1;
for(int i=1;i<=n;i++)
for(int j=i+1;j<=n;j++)
if(sum[j] - sum[i] == cnt)
ans ++;
printf("%d",(ans*(ans-1))>>1);
return 0;
}