ny511 移動小球

2022-05-06 08:36:13 字數 770 閱讀 6833

時間限制:1000 ms  |  記憶體限制:65535 kb

難度:2

描述給你n個小球,從左到右編號依次為1,2,3,4,5,6.........n,並規定小球1的左邊的球號為n,小球n的右邊的球號為1.現在有以下3種操作:a x y表示把編號為x小球移動到編號為y的小球的左邊,b x y表示把編號為x小球移動到編號為y的小球的右邊,q 1 m為詢問編號為m的小球右邊的球號,q 0 m為詢問編號為m的小球左邊的球號。

輸入第一行有乙個整數n(0

輸出輸出每次詢問的球號

樣例輸入

1

6 3a 1 4

b 3 5

q 1 5

樣例輸出

3

講解:題意說,編號排一遍就固定了,不會變,所以,改變一次編號就亂了;

#include

int a[10001];

int find(int n)//尋找本編號的號碼,所在陣列中的位置;

void shift_circular_left(int x, int y)

a[y] = t;

}void shift_circular_right(int x, int y)

a[x]=t;

}int main()

else

printf("%d\n",a);

//   for(j=1;j<=n;j++)

//    printf("%d*******%d\n",j,a[j]);}}

}return 0;

}

NYOJ 511 移動小球

這道題很容易想到要構建乙個迴圈鍊錶來確定每個球的相對位置,就是操作比較繁瑣,考慮情況較多。首先要建立節點node,每個節點都有乙個初始順序order,指向左邊的node 指標left,何指向右邊的node 指標right。cpp view plain copy print?struct node n...

NYOJ 511 移動小球 模擬

解題思路 先預處理一下左右陣列,使他們滿足初始時候的左右鄰居。然後模擬移動即可。這裡需要注意的就是移動時改變左右鄰居時,要防止覆蓋問題。就是我更改某個鄰居後,不能在以後的修改中影響這個值,所以順序需要注意。在這裡錯了,找了半個小時。悲劇。如下 include include include incl...

跳舞鏈 nyist511 小球移動

題目傳送門 跳舞鏈是帶哨兵節點的雙向迴圈鍊錶,更加優美的形式是將該鍊錶用靜態鍊錶的形式實現,使得查詢,刪除和恢復操作的時間複雜度均為o 1 include include using namespace std const int max 10010 int data max left max ri...