靜態模擬雙向鍊錶,只要寫的仔細一點就沒有難度,自己就是因為不仔細寫了很長時間。。
注意: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的左邊則忽略此...