前言
今天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 1…6 相关的创伤事件,他只希望拍摄一组奶牛,如果它们的 ID 加起来是 7 的倍数。
请帮助 Farmer John 确定他可以拍摄的最大奶牛组的大小。
输入格式
输入的第一行包含 N N N( 1 ≤ N ≤ 50 , 000 1 \leq N \leq 50,000 1≤N≤50,000)。接下来的 N N N 行每行包含一头奶牛的整数 ID(所有 ID 都在 0 … 1 , 000 , 000 0 \ldots 1,000,000 0…1,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)
兄弟们给个赞呗
先 赞 后 看 养 成 习 惯