心灵震荡 @ 2023-03-06 10:58:34
Rt,链表写法,样例能过,0pts
#include<bits/stdc++.h>
using namespace std;
int n,k,a,b,c,aa,a_a,bb,cc,nxt[100005];
int main(){
cin>>n>>k;
for(int i=1;i<=n;i++)nxt[i-1]=i;
while(k--){
cin>>a>>b>>c;
aa=bb=cc=a_a=0;
for(int i=nxt[0],j=1;i;i=nxt[i],j++){
if(j==a-1)a_a=i;
if(j==a)aa=i;
if(j==b)bb=i;
if(j==c)cc=i;
}
nxt[a_a]=nxt[bb];
nxt[bb]=nxt[cc];
nxt[cc]=aa;
}
for(int i=nxt[0],j=1;j<=10;i=nxt[i],j++){
cout<<i<<endl;
}
return 0;
}
by Chenyufeng040525 @ 2024-03-20 21:40:07
@心灵震荡
帮你改了一下可以看看差别,但还是建议你看看题解的正解。
#include<bits/stdc++.h>
using namespace std;
int n,k,a,b,c,aa,a_a,bb,cc,nxt[100005];
int main(){
cin>>n>>k;
for(int i=1;i<=n;i++)nxt[i-1]=i;
while(k--){
cin>>a>>b>>c;
aa=bb=cc=0;
if(c>=a)c+=b-a+1;
for(int i=0,j=0;!bb||!cc&&c;i=nxt[i],j++){
if(j==a-1)aa=i;
if(j==b)bb=i;
if(j==c)cc=i;
}
a_a=nxt[aa];
nxt[aa]=nxt[bb];
nxt[bb]=nxt[cc];
nxt[cc]=a_a;
}
for(int i=nxt[0],j=1;j<=10;i=nxt[i],j++){
cout<<i<<endl;
}
return 0;
}
by 心灵震荡 @ 2024-03-20 22:43:21
@Chenyufeng040525 额啊一年了老哥
by Chenyufeng040525 @ 2024-03-20 23:00:41
@心灵震荡
顺手帮下,就当锻炼自己看代码的能力,而且我也确实看到你这题还没过才多管闲事的。