BZOJ 1800 [Ahoi2009]fly 飞行棋
【题解】
因为本题数据范围实在是很小,所以直接写了大暴力。
#include<cstdio> #include<algorithm> #define N 1010 #define rg register using namespace std; int n,a[N],ans,sum[N]; inline int read(){ int k=0,f=1; char c=getchar(); while(c<'0'||c>'9')c=='-'&&(f=-1),c=getchar(); while('0'<=c&&c<='9')k=k*10+c-'0',c=getchar(); return k*f; } int main(){ n=read(); for(rg int i=1;i<=n;i++) a[i]=read(),sum[i]=sum[i-1]+a[i-1]; int s=sum[n]+a[n]; for(rg int i=1;i<=n-3;i++) for(rg int j=i+1;j<=n-2;j++) for(rg int k=j+1;k<=n-1;k++) for(rg int l=k+1;l<=n;l++) if(sum[j]-sum[i]==sum[l]-sum[k]&&sum[k]-sum[j]==s-(sum[l]-sum[i])) ans++; printf("%d\n",ans); return 0; }