前缀和+后缀和

例题:

ZYing的数列
Description

这两天,ZYing突然迷上了数列,她喜欢用随机数生成数列,然后去开动自己的大脑去研究这个数列有什么样的性质。最近她研就的性质和7有关,她用随机数生成了一个长度为n的数列,她觉得一个成功的数列,需要有连续的一段和为7的倍数的数,现在她想知道,她这个数列中,长度最长的和为7的倍数的连续区间的长度。


Input
第一行一个整数n代表数列中数的个数。

第二至n+1行每行一个非负整数表示数列中的数。


Output
一行一个整数代表最长的区间的长度。如果不存在,则输出0。


Sample Input 1 

10
2
45
5
12
9
3
5
67
4
11
Sample Output 1

9
Hint

1 ≤𝑁≤50,000。数列中没个数a_ia 
i
​
 满足0 \leq a_i \leq 1e90≤a 
i
​
 ≤1e9
View Code

解决:

首先求前缀和,并对7取模,这样得到的数组,余数相同的两位之间的连续子段和模7的值就为0;
统计出每个模数最先出现的位置,和最后出现的位置,就可求出长度,取最大值即可。
View Code

 实质:

  • 减法思维
posted @ 2021-11-19 18:02  VxiaohuanV  阅读(23)  评论(0编辑  收藏  举报