***袁老师版题解***
2025-07-14 10:49:25
发布于:广东
27阅读
0回复
0点赞
袁老师版题解
#include<bits/stdc++.h>
using namespace std;
#define int long long
signed main()
{
string s;
int n,q,l,r,x,cpp=0;
cin>>n>>s>>q;
int a[n+2]={0},b[n]={0};
while(q--)
{
cin>>x;
x--;
if(x)//op==2
{
cin>>x;
cpp+=x;
cpp%=n;
}
else//op==1
{
cin>>l>>r>>x;
l=(l-1-cpp+n)%n;
r=(r-1-cpp+n)%n;
if(l<=r)
{
a[l]+=x;
a[r+1]-=x;
}
else
{
a[0]+=x;
a[r+1]-=x;
a[l]+=x;
}
}
}
b[0]=a[0];
for(l=1;l<n;l++)
{
b[l]=a[l]+b[l-1];
//cout<<b[l];
}
for(int i=0;i<n;i++)
{
int k=(i-cpp+n)%n;
char ak=(s[k]-'a'+b[k]+26)%26+'a';
cout<<ak;
}
}
全部评论 5
?原来直接差分就行了....
还上了一个树状数组2025-07-14 来自 四川
0袁老师版题解——点赞,互关
2025-07-14 来自 广东
0袁老师版题解——点赞,互关
2025-07-14 来自 广东
0袁老师版题解——点赞,互关[:颠倒][:颠倒][:颠倒]
2025-07-14 来自 广东
0***袁老师版题解***——点赞,互关
2025-07-14 来自 广东
0
有帮助,赞一个