bzoj4512: [Usaco2016 Jan] Build Gates

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了bzoj4512: [Usaco2016 Jan] Build Gates相关的知识,希望对你有一定的参考价值。

题目大意:给个序列,求最长的连续子序列使其为7的倍数

又是一道令人欢喜的不用怎么用脑的水题。。

边读入,边计算前缀和

分别保存前缀和%7结果为1,2,3,4,5,6的第一次的位置

然后减一减就知道长度啦。

 1 #include<stdio.h>
 2 #include<string.h>
 3 #include<algorithm>
 4 using namespace std;
 5 int n,t,last[8],ans;
 6 long long sum[50010];
 7 int main(){
 8     scanf("%d", &n);
 9     ans=0;
10     for (int i=1; i<=n; i++){
11         scanf("%lld", &sum[i]);
12         sum[i]+=sum[i-1];
13         t=sum[i]%7;
14         if (!last[t]) last[t]=i;
15         ans=max(ans,i-last[t]);
16     }
17     printf("%d\n", ans);
18     return 0;
19 } 

 

以上是关于bzoj4512: [Usaco2016 Jan] Build Gates的主要内容,如果未能解决你的问题,请参考以下文章

bzoj4525: [Usaco2016 Jan]Angry Cows

bzoj4511: [Usaco2016 Jan]Subsequences Summing to Sevens

[BZOJ4506] [Usaco2016 Jan]Fort Moo(DP?)

bzoj4509Usaco2016 JanAngry Cows

[BZOJ1677][Usaco2005 Jan]Sumsets 求和

bzoj 1783: [Usaco2010 Jan]Taking Turns