使用前缀和写的题

简介: 计算机科学教育新生态

计算机科学教育新生态 (luogu.com.cn) 

2.1.png

⭐⭐⭐ 当s[r]和s[l−1]模7相同时,区间就能被7整除

因为这是前缀和

妙!!!

这个题必须得提前%7来判断,否则会超时

#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
const int N=100010;
int n,a,s,r[N],l[N],ans; 
int main(){
    memset(l,-1,N);//把数组变成{0,-1,-1,-1,-1,-1,......}的样子
  l[0]=0;
  cin>>n;
  for(int i=1;i<=n;++i)
  {
    cin>>a;
    s=(s+a)%7;
    if(l[s]==-1)l[s]=i;//如果s=(s+a)%7=0,那么r[0]=i,否则l[s]=i
    r[s]=i;
  }
  for(int i=0;i<7;++i)
  {
    if(l[i]!=-1)
    {
      ans=max(ans,r[i]-l[i]);
    }
  }
  cout<<ans;
}

对于数组设置成{0,-1,-1,-1……}的样子,刚开始我是弄成了l[N]={-1}


但是不对,我以为这样就能把数组里面的数全部初始化为-1了


但是后来恍然大悟(暗藏玄只因),这样子的意思是第N+1个数为-1,其他的还是0


所以得用memset(因为之前以为memset函数没什么用)


Code over!  

相关文章
|
人工智能 移动开发
【前缀和】
【前缀和】
|
4月前
|
算法
【算法】前缀和——前缀和
【算法】前缀和——前缀和
|
4月前
|
算法
【算法】前缀和——二维前缀和模板题
【算法】前缀和——二维前缀和模板题
|
3月前
|
存储 算法 Java
前缀和算法
本文介绍了前缀和及其变种在解决区间求和问题中的应用。首先,一维前缀和可通过预处理数组快速求得任意区间的和。接着,二维前缀和扩展了这一思想,适用于矩阵操作。此外,文章探讨了如何利用前缀和解决诸如“寻找数组中心下标”、“除自身以外数组的乘积”等问题,并进一步讲解了涉及哈希表优化的“和为 K 的子数组”等相关题目。最后,通过实例展示了如何在矩阵中高效计算特定区域的元素之和。文中包含代码示例与图解说明,便于理解。
46 0
前缀和算法
|
7月前
|
机器学习/深度学习 存储 算法
【算法系列篇】前缀和-2
【算法系列篇】前缀和-2
|
7月前
|
存储 算法 Java
【算法系列篇】前缀和-1
【算法系列篇】前缀和-1
|
7月前
|
人工智能
前缀和-给恐暴龙喂食
前缀和-给恐暴龙喂食
|
7月前
|
存储 算法
前缀和算法模板
前缀和算法模板
|
7月前
|
人工智能 移动开发
前缀和讲解
前缀和讲解
39 0
|
7月前
[leetcode 前缀和]
[leetcode 前缀和]