关注
第一题,代码。因为改了两个版本。所以有点丑。 思路:先求sum[i],表示前i项的和,然后对每个sum[i]模k,那么我们要找的就是模k后的值相同的那些数中相距最远的。 #include <iostream>
#include <vector>
#include <unordered_map>
#include <algorithm>
using namespace std;
bool cmp(const pair<int,int>& a,const pair<int,int>&b){
if(a.first==b.first){
return a.second < b.second;
}else{
return a.first<b.first;
}
}
int main(){
int n;
cin>>n;
vector<int> a(n+1);
vector<int> s(n+1,0);
for(int i=1;i<=n;++i){
cin>>a[i];
s[i] = s[i-1] + a[i];
}
int k;
cin>>k;
int res = 0;
vector<pair<int,int>> mod(n+1);
for(int i=1;i<=n;++i){
mod[i].first = s[i]%k;
mod[i].second = i;
}
sort(mod.begin()+1,mod.end(),cmp);
int l = 0;
int tem = 0;
for(int i=1;i<=n;++i){
if(mod[i].first==tem) continue;
else {
int tres = mod[i-1].second - mod[l].second;
res = max(res,tres);
tem = mod[i].first;
l = i;
}
}
int tres = mod[n].second - mod[l].second;
res = max(res,tres);
cout<<res<<endl;
}
查看原帖
点赞 10
相关推荐
牛客热帖
更多
正在热议
更多
# 在大厂上班是一种什么样的体验 #
11496次浏览 147人参与
# 你的mentor是什么样的人? #
50982次浏览 718人参与
# 程序员找工作至少要刷多少题? #
19977次浏览 255人参与
# 我和mentor的爱恨情仇 #
106116次浏览 944人参与
# 论秋招对个人心气的改变 #
12232次浏览 168人参与
# 校招第一份工作你干了多久? #
136571次浏览 597人参与
# 机械人避雷的岗位/公司 #
43803次浏览 303人参与
# 为了减少AI幻觉,你注入过哪些设定? #
5327次浏览 162人参与
# 设计人如何选offer #
189603次浏览 868人参与
# 你的秋招进行到哪一步了 #
2530257次浏览 23253人参与
# 机械人还在等华为开奖吗? #
312047次浏览 1582人参与
# 牛客AI体验站 #
7253次浏览 197人参与
# 重来一次,我还会选择这个专业吗 #
411144次浏览 3898人参与
# 我现在比当时_,你想录用我吗 #
9098次浏览 116人参与
# 12306一秒售罄,你抢到回家的票了吗? #
2147次浏览 50人参与
# 一张图晒一下你的AI员工 #
5450次浏览 121人参与
# 研究所VS国企,该如何选 #
244439次浏览 1982人参与
# AI Coding的使用心得 #
4934次浏览 105人参与
# 刚入职的你踩过哪些坑 #
7224次浏览 130人参与
# 关于春招/暑期实习,你想知道哪些信息? #
7917次浏览 121人参与
