1 5 6 4 5 6 5 4 4 11 1 20 6 10
2 2 0 2 1 0
该题是预处理和优化的题型,该题涉及到多个区间和,如果重复的进行相加,会浪费时间导致超时,所以我们可以将所有的a[i]相加,得到前缀和sum[i].当后面只需判断
是否sum[j]-sum[i]==qi即可
前缀和
scanf("%lld %lld",&n,&m); for (i=1;i<=n;i++) { scanf("%lld",&l); sum[i]=sum[i-1]+l; }
判断
scanf("%lld",&qi);
for (i=0;i<n;i++)
for (j=i+1;j<=n;j++)
if (sum[j]-sum[i]==qi)
k++;
printf("%d\n",k);
k=0;
原文:http://www.cnblogs.com/unique123/p/6322559.html