佇列Q 牛客

2022-03-31 22:18:09 字數 1120 閱讀 4726

記錄我的魚唇時間到了。開兩個陣列乙個記錄 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...