。。

圈圈

http://www.nowcoder.com/questionTerminal/f4729457b9a9446990efe61a62aee480

include<stdio.h>

include<bits/stdc++.h>

using namespace std;
typedef long long ll;
const ll mod=1000000007;
const ll base=313;
int n,m,k;
int s[100005];
ll jc[100005],hs[100005];
vector<int> vec[50005];
int pdhash(int x,int y,int len){
ll hx=(hs[x+len-1]-hs[x-1]jc[len]%mod+mod)%mod;
ll hy=(hs[y+len-1]-hs[y-1]
jc[len]%mod+mod)%mod;
// cout<<"hash="<<hx<<" "<<hy<<" --"<<hs[y+len-1]<<" jc:"<<jc[len]<<" len:"<<len<<endl;
if(hx==hy) return 1;
return 0;
}
int pd(int x,int y ,int k){
int l=0,r=n;
while(l<r){
int mid=(l+r+1)/2;
if(pdhash(x,y,mid)){
l=mid;
}else{
r=mid-1;
}
}
if(l==n) return 1;
x=(s[x+l]+k)%m;
y=(s[y+l]+k)%m;
//cout<<x<<" -- "<<y<<" len="<<l<<endl;
return y<x;
}
int main()
{
jc[0]=1;
for(int i=1;i<=500002;i++) jc[i]=jc[i-1]base%mod;
//cout<<jc[1]<<endl;
cin>>n>>m>>k;
for(int i=1;i<=n;i++){
cin>>s[i];
s[i+n]=s[i];
vec[s[i]%m].push_back(i);
}
for(int i=1;i<=n2;i++) hs[i]=(hs[i-1]base+s[i])%mod;
int dex=1;
for(int i=2;i<=n;i++){
if(pd(dex,i,0))dex=i;
}
cout<<s[dex+k-1]<<endl;
for(int i=m-1;i>=1;i--){
if(vec[i].size()){
int d=vec[i][0];
for(int j=1;j<vec[i].size();j++){
int v=vec[i][j];
if(pd(d,v,m-i))d=v;
}
dex=d;
}
//cout<<(s[dex+k-1]+m-i)<<"--"<<m-i<<endl;</int>

    cout<<(s[dex+k-1]+m-i)%m<<endl;
}

return 0;

}

全部评论

相关推荐

来个大佬救一下,为上投了都是石沉大海了,没实习经历的话怕秋招直接进不了面。什么实习这么难找,基本
心态爆炸了:现在正式的岗位都少,实习基本不咋招的,除了大厂,中小企业其实没那么多岗位需求,就算是有,大多都是招一两个廉价劳动力,同时,他们也会希望你一来就能干活的,没时间培训你,就让你了解公司的项目,你了解完就可以开始干活。再者是,很多低质量的实习其实用处没有那么大的。我去年也是找实习找到破防,最后去了一家深圳的小公司实习,工作对我来说很简单,甚至不如我在学校做的项目,秋招的时候,这段实习经历也并没有帮上什么忙,投递简历,依旧非常低的回复率。低回复率是常态,尤其是找实习,找不到,那就把重心放在优化自己的简历和项目,多看八股文,锻炼自己的面试能力,多看别人的面经,自己模拟面试,等秋招的时候,只要有那么寥寥几次,好好抓住那几次机会。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务