這道題剛開始我的想法是用兩個棧分別去存first和last所操作的數,用map標記入棧的數,然後先將first棧中的數輸出,然後再遍歷陣列輸出沒有被標記的數,最後再輸出last棧中的數,雖然我覺得沒什麼問題吧,但是只過了5%的樣例。能ac的方法就是首先我們要從100000開始輸入資料(至於為什麼等會再說),然後用map去標記這個數的當前位置。然後進行操作的時候,如果是first我們就從100000往前存這個數,如果是last我們就從100000+n開始往後繼續存數,同時需要更新map的標記,最後我們只需要輸出map所標記的值就好了。
因為可能會有100000個first個操作,所以最開始輸入數的時候下標要大於等於100000...
emmmmm...先貼乙個我認為沒什麼毛病的**
過了5%樣例的**:
#include #include #include #include using namespace std;
mapma;
int n,m;
int l = 100000;
int pre[300005];
int main()
else
} for(int i=l;i<=r;i++)
} return 0;
}
ac**:
#include #include #include #include using namespace std;
mapma;
int n,m;
int l = 100000;
int pre[300005];
int main()
else
} int num = 0;
for(int i=l;i<=r;i++)
} return 0;
}
牛客 wannafly挑戰賽19 A 佇列
zzt 創造了乙個佇列 q。這個佇列包含了 n 個元素,佇列中的第 i 個元素用 qi 表示。q1 表示隊頭元素,qn 表示隊尾元素。佇列中的元素是 n 的乙個全排列。zzt 需要在這個佇列上執行 p 次操作,操作分兩種 first x 將元素 x 移到隊頭。last x 將元素 x 移到隊尾。在 ...
牛客Wannafly 挑戰賽19 A 佇列Q
zzt 創造了乙個佇列 q。這個佇列包含了 n 個元素,佇列中的第 i 個元素用 q i 表示。q 1 表示隊頭元素,q n 表示隊尾元素。佇列中的元素是 n 的乙個全排列。zzt 需要在這個佇列上執行 p 次操作,操作分兩種 first x 將元素 x 移到隊頭。last x 將元素 x 移到隊尾...
Wannafly挑戰賽19 F K串 莫隊
zzt 得到了乙個字串 s 以及乙個整數 k。wzh 在 1995 年提出了 優雅 k 串 的定義 這個字串每一種字元的個數都是 k 的倍數。現在 zzt 想要對字串進行 q 次詢問,第 i 次詢問給出乙個區間 li,ri 他想計算 li,ri 中有多少個子串是 優雅 k 串 由於 zzt 忙於工作...