時間限制: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...