题面
- 经过检查发现我的第三个操作是 O(n) 复杂度,显然不行
- 那怎么把所有操作优化成 O(1) 呢?
#include <iostream>
using namespace std;
const long long maxn=3e5+9;long long Q;
long long q[maxn],head,tail;
int main()
{
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
cin>>Q;
head=0,tail=0;
for(;Q--;)
{
long long type,value;
cin>>type;
if(type==1)
{
cin>>value;
q[tail]=value;
tail++;
tail%=maxn;
}
if(type==2)
{
head++;
head%=maxn;
}
if(type==3)
{
cin>>value;
long long j=0;
for(long long i=1;i<value;i++)
{
j+=q[(head+i-1)%maxn];
}
cout<<j<<'\n';
}
}
return 0;
}