鏈結比賽題目
zzt 創造了乙個佇列 q。這個佇列包含了 n 個元素,佇列中的第 i 個元素用 qi 表示。q1 表示隊頭元素,qn 表示隊尾元素。佇列中的元素是 n 的乙個全排列。暴力模擬zzt 需要在這個佇列上執行 p 次操作,操作分兩種:
first x: 將元素 x 移到隊頭。
last x: 將元素 x 移到隊尾。
在 p 次操作之後,zzt 想知道佇列中的元素的排列方式,由於他最近很忙,因此需要請你幫他解決這個問題。
接下來 p 行,第 i 行輸入乙個字串 si 以及乙個正整數 xi,表示一次操作。第一行輸入乙個正整數 n,表示佇列的大小。
第二行輸入 n 個正整數,q1, q2, q3, ... ..., qn,qi 表示佇列中的第 i 個元素。保證這 n 個數是 n 的乙個全排列。
第三行輸入乙個正整數 p,表示接下來要進行的操作次數。
1 ≤ n ≤ 105.
1 ≤ qi ≤ n.
1 ≤ p ≤ 105.
si1 ≤ xi ≤ 105.
示例1輸出 n 個正整數,表示 p 次操作之後的佇列。
4
4 2 1 3
3first 4
last 2
last 1
4 3 2 1
要挪走那個元素 就把他置為0 然後把他放到隊頭or隊尾
存的時候 要注意 有個小技巧乙個陣列存值 乙個陣列存下標
因為題目說了是全排列所以不存在相同的數字 所以每個數字對應乙個下標
通過下表可以o(1)的時間內找到他 並且修改為0 修改時注意存下標的陣列也要跟著修改
**
#include#include#includeusing namespace std;
const int maxn=4e5+28;
int a[maxn],b[maxn];
int n,m,t,w,flag;
int main()
t=n/2;w=n/2+n-1;
scanf("%d",&m);
while(m--)
else
}for(int i=t;i<=w;i++)
}return 0;
}
從陣列中查詢給定數的下標
package array 1 輸入任意數,從當前陣列中進行查詢。如果有,輸出其下標 如果沒有,則輸出 1,表示無。2 輸入數字,其在陣列中有重複值,輸出其出現第二次時的下標值。思想 1 我們需要初始化乙個陣列int,在其中查詢。需要乙個初始值num 2 對陣列進行迴圈迭代,通過if判斷,如果陣列中...
二分查詢(簡單版) 陣列下標表示
如果不是從一組隨機的序列裡查詢,而是從一組排好序的序列裡找出某個元素的位置,則可以有更快的演算法 例 11.4.折半查詢 include define len 8 int a len int binarysearch int number return 1 int main void 由於這個序列已...
Q1 二維陣列中的查詢
在乙個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。將要查詢的元素和二維陣列 矩陣 的右上角元素比較,如果相等則返回true。如果大於這個元素,那麼可以把第一行的元素去掉 如果小於這個元...