新人求助,PASTE那题,本机AC提交WA

P1188 PASTE

心灵震荡 @ 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

@心灵震荡

顺手帮下,就当锻炼自己看代码的能力,而且我也确实看到你这题还没过才多管闲事的。


|