P3131 [USACO16JAN] Subsequences Summing to Sevens S

前言

今天zty带来的是P3131 [USACO16JAN] Subsequences Summing to Sevens S,大家给个赞呗, zty开学了,更新是会变少的,这个学期是zty的毕业学期了,过完这学期zty就毕业了

先 赞 后 看 养 成 习 惯
在这里插入图片描述


先 赞 后 看 养 成 习 惯
演示用编译器及其标准
Dev C++ 6.7.5 Red panda C++14

正文

P3131 [USACO16JAN] Subsequences Summing to Sevens S

题目描述

Farmer John 的 N N N 头奶牛站成一排,这是它们时不时会做的事情。每头奶牛都有一个独特的整数 ID 编号,以便 Farmer John 能够区分它们。Farmer John 希望为一组连续的奶牛拍照,但由于童年时与数字 1 … 6 1 \ldots 6 16 相关的创伤事件,他只希望拍摄一组奶牛,如果它们的 ID 加起来是 7 的倍数。

请帮助 Farmer John 确定他可以拍摄的最大奶牛组的大小。

输入格式

输入的第一行包含 N N N 1 ≤ N ≤ 50 , 000 1 \leq N \leq 50,000 1N50,000)。接下来的 N N N 行每行包含一头奶牛的整数 ID(所有 ID 都在 0 … 1 , 000 , 000 0 \ldots 1,000,000 01,000,000 范围内)。

输出格式

请输出 ID 之和为 7 的倍数的最大连续奶牛组中的奶牛数量。如果不存在这样的组,则输出 0。

输入输出样例 #1

输入 #1

7
3
5
1
6
2
14
10

输出 #1

5

说明/提示

在这个例子中, 5 + 1 + 6 + 2 + 14 = 28 5+1+6+2+14 = 28 5+1+6+2+14=28

#include<bits/stdc++.h>
using namespace std;
const int maxn = 50010;
int pre[maxn];
int n, len, mx = -1;
int first[7], last[7];
int main() {
    
    
	cin >> n;
	for (int i = 1; i <= n; i++) {
    
    
		cin >> pre[i];
		pre[i] = (pre[i] + pre[i - 1]) % 7; 
	}
	for (int i = n; i >= 1; i--) {
    
    
		first[pre[i]] = i;
	}
	first[0] = 0;
	for (int i = 1; i <= n; i++) {
    
    
		last[pre[i]] = i;
	}
	for (int i = 0; i <= 6; i++) {
    
    
		mx = max(last[i] - first[i], mx);
	}
	cout << mx << endl;
	return 0;
}

后记

作者:zty郑桐羽呀
联系方式:(企鹅 3782663736)
兄弟们给个赞呗
先 赞 后 看 养 成 习 惯