csu 1329 一行盒子(雙向鍊錶模擬)

2021-06-26 06:33:17 字數 957 閱讀 9853

靜態模擬雙向鍊錶,只要寫的仔細一點就沒有難度,自己就是因為不仔細寫了很長時間。。

注意:1.修改兩個元素時不但要考慮這兩個元素本身,還要考慮他們的前驅和後繼結點的變化。

2.交換操作注意兩個相鄰元素交換是特殊情況。

3.反轉整個表不需要每次都轉,記錄下轉了多少次**偶數次等於沒轉),當前如果被反轉了那麼1操作就會變成2操作,紙上寫一下就知道了

4.輸出用lld

**:

#include #include #include #include #define ll long long

#define maxn 100005

using namespace std;

int left[maxn];

int right[maxn];

int n;

int start,end;

int pos[maxn];

void check(int a,int b)

void del(int a)

void setright(int a,int b)

void setleft(int a,int b)

void swap(int a,int b)

else if(l2==a)

else

check(a,b);

}int main()

left[0]=-1;

start=1,end=n;

int flip=0;

while(m--)

else if(t==2)

else if(t==3)

else flip++;

}ll res=0;

if(flip%2==0)

}else

}printf("case %d: %lld\n",flag++,res);

}return 0;

}

csu 1329 一行盒子

一行盒子 crawling failed submit status practice csu 1329 description 你有一行盒子,從左到右依次編號為1,2,3,n 你可以執行四種指令 1 x y表示把盒子 x移動到盒子 y左邊 如果 x已經在 y的左邊則忽略此指令 2 x y表示把盒子...

CSU 1329 一行盒子(模擬鍊錶)

description 你有一行盒子,從左到右依次編號為1,2,3,n。你可以執行四種指令 1 x y表示把盒子x移動到盒子y左邊 如果x已經在y的左邊則忽略此指令 2 x y表示把盒子x移動到盒子y右邊 如果x已經在y的右邊則忽略此指令 3 x y表示交換盒子x和y的位置。4 表示反轉整條鏈。指令...

1662 一行盒子

time limit 1 sec memory limit 128 mb submit 10 solved 6 submit status web board 你有一行盒子,從左到右依次編號為1,2,3,n。你可以執行四種指令 l 1 x y表示把盒子x移動到盒子y左邊 如果x已經在y的左邊則忽略此...