P3131 [USACO16JAN] Subsequences Summing to Sevens S

P3131 [USACO16JAN] Subsequences Summing to Sevens Shttps://www.luogu.com.cn/problem/P3131算法:前缀和

思路

O(N^2)的复杂度降低为O(N)

(a - b) % k = 0 ==> a % k = b % k

从上面的公式我们可以得出一个结论:余数相同的两个数,其差能被 k 整除

C++代码
cpp 复制代码
#include <bits/stdc++.h>
using namespace std;

#define int long long
#define endl '\n'
const int N = 5e4 + 10;

int n,m;
int a[N],s[N];
int pre[7],post[7];

signed main(){
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	
	cin >> n ;
	
	for(int i = 1; i <= n; i++){
		cin >> a[i];
		s[i] = (s[i-1] + a[i]) % 7; //前缀和存7的余数 
	}
	s[0] = 0;
	for(int i = n; i >= 0; i--){  //倒序,找余数为 i 的第一个位置 
	     pre[s[i]] = i;
	}
	for(int i = 0 ; i <= n; i++){
		post[s[i]] = i;      //正序,找余数为 i的最后一个位置 
	}
	
	int ans = 0;
	//7的倍数 因此余数是从0~7 
	for(int i = 0; i < 7; i++){
		ans = max(ans,post[i] - pre[i]);
	}
	cout << ans ;
	return 0;
}
相关推荐
知识浅谈2 小时前
DeepSeek V4 和 GPT-5.5 在同一天发布了??我也很懵,但对比完我悟了
算法
DeepModel2 小时前
通俗易懂讲透 Q-Learning:从零学会强化学习核心算法
人工智能·学习·算法·机器学习
田梓燊2 小时前
力扣:19.删除链表的倒数第 N 个结点
算法·leetcode·链表
简简单单做算法4 小时前
基于GA遗传优化双BP神经网络的时间序列预测算法matlab仿真
神经网络·算法·matlab·时间序列预测·双bp神经网络
guygg884 小时前
利用遗传算法解决列车优化运行问题的MATLAB实现
开发语言·算法·matlab
武藤一雄4 小时前
19个核心算法(C#版)
数据结构·windows·算法·c#·排序算法·.net·.netcore
sali-tec4 小时前
C# 基于OpenCv的视觉工作流-章52-交点查找
图像处理·人工智能·opencv·算法·计算机视觉
yu85939585 小时前
MATLAB连续线性化模型预测控制(SL-MPC)
算法·机器学习·matlab
ytttr8735 小时前
基于ACADO工具包的自主车道跟踪与避障MPC控制
算法