記錄我的魚唇時間到了。開兩個陣列乙個記錄 frist,另乙個記錄 last,然後輸出。。。。。果斷掛了,因為同乙個數可以操作多次,所以還需要記錄每個數的位置!!!
#include#define ll long long#define p pair#define pp pair>
#define pb push_back
#define pp pop_back
#define lson root << 1
#define inf (int)2e9 + 7
#define rson root << 1 | 1
#define linf (unsigned long long int)1e18
#define mem(arry, in) memset(arry, in, sizeof(arry))
using
namespace
std;
const
int maxn = 200005
;int
n, q;
inta[maxn], f[maxn], l[maxn], pos[maxn], use[maxn];
intmain()
else
}vector
ans;
for(int i = cnt1; i < 200005; i++) if(i ==pos[f[i]]) ans.pb(f[i]);
for(int i = 1; i <= n; i++) if(!use[a[i]]) ans.pb(a[i]);
for(int i = 1; i <= cnt; i++) if(i ==pos[l[i]]) ans.pb(l[i]);
int m = (int
)ans.size();
for(int i = 0; i < m; i++) printf("
%d%c
", ans[i], i + 1 == m ? '
\n' : '');
return0;
}
牛客 佇列Q(思維)
題目鏈結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 移到隊尾...
牛客 雙端佇列
有 個整數需要排序,能用的工具是若干個雙端佇列。需要依次處理這n個數,可以 考慮排完後的序列,它是由若干雙端佇列組成。發現 對於每個雙端佇列,每個元素換成它在原有序列中的位置,一定是乙個先單調減後單調增的序列。但要討論相同的情況 發現 存在一種最優解,滿足相同的元素在同乙個雙端佇列中 include...